diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 18:07:22 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 18:07:22 +0000 |
commit | c04dcc2e7d834218ef2d4194331e383402495ae1 (patch) | |
tree | 7333e38d10d75386e60f336b80c2443c1166031d /system | |
parent | Initial commit. (diff) | |
download | kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.tar.xz kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.zip |
Adding upstream version 2:20.4+dfsg.upstream/2%20.4+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'system')
261 files changed, 18331 insertions, 0 deletions
diff --git a/system/IRSSmap.xml b/system/IRSSmap.xml new file mode 100644 index 0000000..31c9bda --- /dev/null +++ b/system/IRSSmap.xml @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This file contains the mapping of IR Server Suite keys to XBMC keys used in Keymap.xml --> + +<irssmap> + <remote device="Microsoft MCE"> + <pause>31719</pause> <!-- pause --> + <stop>31718</stop> <!-- stop --> + <play>31721</play> <!-- play --> + <forward>31723</forward> <!-- forward --> + <reverse>31722</reverse> <!-- reverse --> + <left>31711</left> <!-- left --> + <right>31710</right> <!-- right --> + <up>31713</up> <!-- up --> + <down>31712</down> <!-- down --> + <select>31709</select> <!-- ok --> + <pageplus>31725</pageplus> <!-- channel up --> + <pageminus>31724</pageminus> <!-- channel down --> + <back>31708</back> <!-- previous --> + <menu>31707</menu> <!-- dvd menu --> + <title>31671</title> <!-- recorded tv --> + <info>31728</info> <!-- info --> + <skipplus>31717</skipplus> <!-- skip --> + <skipminus>31716</skipminus> <!-- repeat --> + <display>31705</display> <!-- guide --> + <start>31730</start> <!-- start --> + <record>31720</record> <!-- record --> + <volumeplus>31727</volumeplus> <!-- volume up --> + <volumeminus>31726</volumeminus> <!-- volume down --> + <mute>31729</mute> <!-- mute --> + <power>31642</power> <!-- tv power --> + <mytv>31706</mytv> <!-- live tv --> + <one>31742</one> + <two>31741</two> + <three>31740</three> + <four>31739</four> + <five>31738</five> + <six>31737</six> + <seven>31736</seven> + <eight>31735</eight> + <nine>31734</nine> + <zero>31743</zero> + <mytv>31652</mytv> <!-- red --> + <mymusic>31651</mymusic> <!-- green --> + <mypictures>31650</mypictures> <!-- yellow --> + <myvideo>31649</myvideo> <!-- blue --> + </remote> + <remote device="Abstract"> + <!-- This is a default remote used by IR Server Suite to send english names instead of remote codes --> + <!-- And should allow for more remotes to work out of the box with newer IR Server Suite installed --> + <pause>Pause</pause> + <stop>Stop</stop> + <play>Play</play> + <forward>FastForward</forward> + <reverse>Rewind</reverse> + <left>Left</left> + <right>Right</right> + <up>Up</up> + <down>Down</down> + <select>OK</select> + <pageplus>ChannelUp</pageplus> + <pageminus>ChannelDown</pageminus> + <back>Back</back> + <menu>DVD</menu> + <title>RecordedTV</title> + <info>Info</info> + <skipplus>NextChapter</skipplus> + <skipminus>PreviousChapter</skipminus> + <display>Guide</display> + <start>Start</start> + <record>Record</record> + <volumeplus>VolumeUp</volumeplus> + <volumeminus>VolumeDown</volumeminus> + <mute>Mute</mute> + <power>Power</power> + <mytv>LiveTV</mytv> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + <zero>Number0</zero> + <mytv>Red</mytv> + <mymusic>Green</mymusic> + <mypictures>Yellow</mypictures> + <myvideo>Blue</myvideo> + </remote> +</irssmap> diff --git a/system/Lircmap.xml b/system/Lircmap.xml new file mode 100644 index 0000000..ec7c6e0 --- /dev/null +++ b/system/Lircmap.xml @@ -0,0 +1,724 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This file contains the mapping of LIRC keys to XBMC keys used in Keymap.xml --> +<!-- --> +<!-- How to add remotes --> +<!-- <remote device="name_Lirc_calls_the_remote"> --> +<!-- --> +<!-- For the commands the layout following layout is used --> +<!-- <XBMC_COMMAND>LircButtonName</XBMC_COMMAND> --> +<!-- --> +<!-- For a list of XBMC_COMMAND's check out the <remote> sections of keymap.xml --> + +<lircmap> + <remote device="mceusb"> + <play>Play</play> + <pause>Pause</pause> + <stop>Stop</stop> + <forward>Forward</forward> + <reverse>Rewind</reverse> + <left>Left</left> + <right>Right</right> + <up>Up</up> + <down>Down</down> + <select>OK</select> + <pageplus>ChanUp</pageplus> + <pageminus>ChanDown</pageminus> + <back>Back</back> + <menu>DVD</menu> + <title>Guide</title> + <info>More</info> + <skipplus>Skip</skipplus> + <skipminus>Replay</skipminus> + <display>Aspect</display> + <start>Home</start> + <record>Record</record> + <volumeplus>VolUp</volumeplus> + <volumeminus>VolDown</volumeminus> + <mute>Mute</mute> + <power>Power</power> + <myvideo>Videos</myvideo> + <mymusic>Music</mymusic> + <mypictures>Pictures</mypictures> + <mytv>TV</mytv> + <one>One</one> + <two>Two</two> + <three>Three</three> + <four>Four</four> + <five>Five</five> + <six>Six</six> + <seven>Seven</seven> + <eight>Eight</eight> + <nine>Nine</nine> + <zero>Zero</zero> + <star>Star</star> + <hash>Hash</hash> + <clear>Clear</clear> + <enter>Enter</enter> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + <teletext>Teletext</teletext> + <print>Print</print> + + <!-- new kernel-based lirc button names --> + <eject>KEY_EJECTCD</eject> + <left>KEY_LEFT</left> + <right>KEY_RIGHT</right> + <up>KEY_UP</up> + <down>KEY_DOWN</down> + <select>KEY_OK</select> + <start>KEY_HOME</start> + <back>KEY_BACK</back> + <record>KEY_RECORD</record> + <play>KEY_PLAY</play> + <pause>KEY_PAUSE</pause> + <stop>KEY_STOP</stop> + <forward>KEY_FORWARD</forward> + <reverse>KEY_REWIND</reverse> + <volumeplus>KEY_VOLUMEUP</volumeplus> + <volumeminus>KEY_VOLUMEDOWN</volumeminus> + <pageplus>KEY_CHANNELUP</pageplus> + <pageminus>KEY_CHANNELDOWN</pageminus> + <skipplus>KEY_NEXT</skipplus> + <skipminus>KEY_AGAIN</skipminus> + <mute>KEY_MUTE</mute> + <power>KEY_POWER</power> + <myvideo>KEY_VIDEO</myvideo> + <mymusic>KEY_AUDIO</mymusic> + <livetv>LiveTV</livetv> + <livetv>KEY_TV</livetv> + <guide>KEY_EPG</guide> + <one>KEY_1</one> + <two>KEY_2</two> + <three>KEY_3</three> + <four>KEY_4</four> + <five>KEY_5</five> + <six>KEY_6</six> + <seven>KEY_7</seven> + <eight>KEY_8</eight> + <nine>KEY_9</nine> + <zero>KEY_0</zero> + <red>KEY_RED</red> + <green>KEY_GREEN</green> + <yellow>KEY_YELLOW</yellow> + <blue>KEY_BLUE</blue> + <menu>KEY_DVD</menu> + <clear>KEY_CLEAR</clear> + <enter>KEY_ENTER</enter> + <star>KEY_NUMERIC_STAR</star> + <hash>KEY_NUMERIC_POUND</hash> + <info>KEY_INFO</info> + </remote> + + <remote device="XboxDVDDongle"> + <play>PLAY</play> + <pause>PAUSE</pause> + <stop>STOP</stop> + <forward>FORWARD</forward> + <reverse>REVERSE</reverse> + <left>LEFT</left> + <right>RIGHT</right> + <up>UP</up> + <down>DOWN</down> + <select>SELECT</select> + <back>BACK</back> + <menu>MENU</menu> + <title>TITLE</title> + <info>INFO</info> + <skipplus>SKIP+</skipplus> + <skipminus>SKIP-</skipminus> + <display>DISPLAY</display> + <one>1</one> + <two>2</two> + <three>3</three> + <four>4</four> + <five>5</five> + <six>6</six> + <seven>7</seven> + <eight>8</eight> + <nine>9</nine> + <zero>0</zero> + </remote> + + <remote device="Microsoft_Xbox"> + <play>PLAY</play> + <pause>PAUSE</pause> + <stop>STOP</stop> + <forward>FORWARD</forward> + <reverse>REVERSE</reverse> + <left>LEFT</left> + <right>RIGHT</right> + <up>UP</up> + <down>DOWN</down> + <select>SELECT</select> + <back>BACK</back> + <menu>MENU</menu> + <title>TITLE</title> + <info>INFO</info> + <skipplus>SKIP+</skipplus> + <skipminus>SKIP-</skipminus> + <display>DISPLAY</display> + <one>1</one> + <two>2</two> + <three>3</three> + <four>4</four> + <five>5</five> + <six>6</six> + <seven>7</seven> + <eight>8</eight> + <nine>9</nine> + <zero>0</zero> + </remote> + + <remote device="PinnacleSysPCTVRemote"> + <play>KEY_PLAY</play> + <pause>KEY_PAUSE</pause> + <stop>KEY_STOP</stop> + <forward>KEY_FASTFORWARD</forward> + <reverse>KEY_REWIND</reverse> + <left>Vol-Rew</left> + <right>Vol+FF</right> + <up>Chan+Play</up> + <down>Chan-Stop</down> + <pageplus>KEY_CHANNELUP</pageplus> + <pageminus>KEY_CHANNELDOWN</pageminus> + <select>middle</select> + <back>KEY_UNDO</back> + <menu>KEY_MENU</menu> + <title>KEY_L</title> + <info>KEY_INFO</info> + <skipplus>KEY_NEXT</skipplus> + <display>Fullscreen</display> + <record>KEY_RECORD</record> + <volumeplus>KEY_VOLUMEUP</volumeplus> + <volumeminus>KEY_VOLUMEDOWN</volumeminus> + <mute>KEY_MUTE</mute> + <power>KEY_POWER</power> + <one>KEY_1</one> + <two>KEY_2</two> + <three>KEY_3</three> + <four>KEY_4</four> + <five>KEY_5</five> + <six>KEY_6</six> + <seven>KEY_7</seven> + <eight>KEY_8</eight> + <nine>KEY_9</nine> + <zero>KEY_0</zero> + </remote> + + <remote device="anysee"> + <pause>pause</pause> + <stop>stop</stop> + <forward>f1</forward> + <reverse>f2</reverse> + <left>left</left> + <right>right</right> + <up>chan-up</up> + <down>chan-down</down> + <select>ok</select> + <back>exit</back> + <menu>menu</menu> + <title>play</title> + <info>info</info> + <skipplus>jump-fwd</skipplus> + <skipminus>jump-back</skipminus> + <display>size</display> + <start>star</start> + <record>rec</record> + <volumeplus></volumeplus> + <volumeminus></volumeminus> + <mute>mute</mute> + <power>power</power> + <one>1</one> + <two>2</two> + <three>3</three> + <four>4</four> + <five>5</five> + <six>6</six> + <seven>7</seven> + <eight>8</eight> + <nine>9</nine> + <zero>0</zero> + <red>red</red> + <green>green</green> + <yellow>yellow</yellow> + <blue>blue</blue> + <subtitle>subtitle</subtitle> + <language>audio</language> + </remote> + <remote device="iMON-PAD"> + <power>Power</power> + <record>Record</record> + <play>Play</play> + <reverse>Rewind</reverse> + <pause>Pause</pause> + <stop>Stop</stop> + <forward>FastForward</forward> + <left>Left</left> + <right>Right</right> + <up>Up</up> + <down>Down</down> + <select>Enter</select> + <pageplus>Ch+</pageplus> + <pageminus>Ch-</pageminus> + <back>Esc</back> + <back>Backspace</back> + <menu>Multimon</menu> + <title>MouseMenu</title> + <info>SelectSpace</info> + <skipplus>NextChapter</skipplus> + <skipminus>PrevChapter</skipminus> + <display>FullScreen</display> + <start>MultiMon</start> + <volumeplus>Vol+</volumeplus> + <volumeminus>Vol-</volumeminus> + <mute>Mute</mute> + <myvideo>MyMovie</myvideo> + <mymusic>MyMusic</mymusic> + <mypictures>MyPhoto</mypictures> + <mytv>MyTV</mytv> + <one>1</one> + <two>2</two> + <three>3</three> + <four>4</four> + <five>5</five> + <six>6</six> + <seven>7</seven> + <eight>8</eight> + <nine>9</nine> + <zero>0</zero> + <subtitle>Language</subtitle> + </remote> + <remote device="Antec_Veris_RM200"> + <stop>KEY_STOP</stop> + <pause>KEY_PAUSE</pause> + <forward>KEY_FASTFORWARD</forward> + <reverse>KEY_REWIND</reverse> + <left>KEY_LEFT</left> + <right>KEY_RIGHT</right> + <up>KEY_UP</up> + <down>KEY_DOWN</down> + <select>KEY_ENTER</select> + <pageplus>KEY_CHANNELUP</pageplus> + <pageminus>KEY_CHANNELDOWN</pageminus> + <back>KEY_BACKSPACE</back> + <menu>KEY_MENU</menu> + <play>KEY_PLAY</play> + <info>Go</info> + <skipplus>next</skipplus> + <skipminus>prev</skipminus> + <display>FullScreen</display> + <start>applauncher</start> + <record>KEY_RECORD</record> + <volumeplus>KEY_VOLUMEUP</volumeplus> + <volumeminus>KEY_VOLUMEDOWN</volumeminus> + <mute>KEY_MUTE</mute> + <power>KEY_POWER</power> + <myvideo>KEY_VIDEO</myvideo> + <mymusic>KEY_AUDIO</mymusic> + <mypictures>KEY_PHOTO</mypictures> + <mytv>KEY_TV</mytv> + <one>KEY_1</one> + <two>KEY_2</two> + <three>KEY_3</three> + <four>KEY_4</four> + <five>KEY_5</five> + <six>KEY_6</six> + <seven>KEY_7</seven> + <eight>KEY_8</eight> + <nine>KEY_9</nine> + <zero>KEY_0</zero> + <star>Star</star> + <hash>Hash</hash> + <playlist>KEY_BOOKMARKS</playlist> + <teletext>Thumbnail</teletext> + <title>TaskSwitcher</title> + </remote> + <remote device="MCE_via_iMON"> + <play>KEY_PLAY</play> + <pause>KEY_PAUSE</pause> + <stop>KEY_STOP</stop> + <forward>KEY_FASTFORWARD</forward> + <reverse>KEY_REWIND</reverse> + <left>KEY_LEFT</left> + <right>KEY_RIGHT</right> + <up>KEY_UP</up> + <down>KEY_DOWN</down> + <select>KEY_OK</select> + <pageplus>KEY_CHANNELUP</pageplus> + <pageminus>KEY_CHANNELDOWN</pageminus> + <back>KEY_BACKSPACE</back> + <menu>PreviousMenu</menu> + <title>Guide</title> + <info>KEY_INFO</info> + <skipplus>KEY_SKIP</skipplus> + <skipminus>KEY_REPLAY</skipminus> + <display>Teletext</display> + <start>WindowsMCE</start> + <record>KEY_RECORD</record> + <volumeplus>KEY_VOLUMEUP</volumeplus> + <volumeminus>KEY_VOLUMEDOWN</volumeminus> + <mute>KEY_MUTE</mute> + <power>KEY_POWER</power> + <myvideo>KEY_VIDEO</myvideo> + <mymusic>KEY_AUDIO</mymusic> + <mypictures>KEY_PHOTO</mypictures> + <mytv>KEY_TV</mytv> + <one>KEY_ONE</one> + <two>KEY_TWO</two> + <three>KEY_THREE</three> + <four>KEY_FOUR</four> + <five>KEY_FIVE</five> + <six>KEY_SIX</six> + <seven>KEY_SEVEN</seven> + <eight>KEY_EIGHT</eight> + <nine>KEY_NINE</nine> + <zero>KEY_ZERO</zero> + <star>Star</star> + <hash>Hash</hash> + <clear>KEY_DELETE</clear> + <enter>KEY_ENTER</enter> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </remote> + <remote device="TwinHanRemote"> + <display>fullscreen</display> + <power>power</power> + <one>1</one> + <two>2</two> + <three>3</three> + <four>4</four> + <five>5</five> + <six>6</six> + <seven>7</seven> + <eight>8</eight> + <nine>9</nine> + <record>rec</record> + <zero>0</zero> + <myvideo>favorite</myvideo> + <volumeminus>rewind</volumeminus> + <volumeplus>forward</volumeplus> + <up>ch+</up> + <left>vol-</left> + <select>play</select> + <right>vol+</right> + <down>ch-</down> + <menu>recall</menu> + <stop>stop</stop> + <pause>pause</pause> + <mute>mute</mute> + <info>epg</info> + <recordedtv>recordlist</recordedtv> + <title>teletext</title> + </remote> + + <remote device="linux-input-layer"> + <altname>cx23885_remote</altname> + <left>KEY_LEFT</left> + <right>KEY_RIGHT</right> + <up>KEY_UP</up> + <down>KEY_DOWN</down> + <select>KEY_OK</select> + <select>KEY_ENTER</select> + <enter>KEY_ENTER</enter> + <clear>KEY_DELETE</clear> + <start>KEY_SELECT</start> + <start>KEY_PROG1</start> + <start>KEY_HOME</start> + <back>KEY_ESC</back> + <back>KEY_EXIT</back> + <back>KEY_BACK</back> + <back>KEY_CLOSE</back> + <record>KEY_RECORD</record> + <play>KEY_PLAY</play> + <play>KEY_PLAYPAUSE</play> + <pause>KEY_PAUSE</pause> + <stop>KEY_STOP</stop> + <stop>KEY_STOPCD</stop> + <forward>KEY_FASTFORWARD</forward> + <reverse>KEY_REWIND</reverse> + <volumeplus>KEY_VOLUMEUP</volumeplus> + <volumeminus>KEY_VOLUMEDOWN</volumeminus> + <pageplus>KEY_CHANNELUP</pageplus> + <pageminus>KEY_CHANNELDOWN</pageminus> + <skipplus>KEY_NEXTSONG</skipplus> + <skipplus>KEY_NEXT</skipplus> + <skipminus>KEY_PREVIOUSSONG</skipminus> + <skipminus>KEY_PREVIOUS</skipminus> + <title>KEY_TITLE</title> + <guide>KEY_EPG</guide> + <subtitle>KEY_SUBTITLE</subtitle> + <language>KEY_LANGUAGE</language> + <mute>KEY_MUTE</mute> + <power>KEY_POWER</power> + <myvideo>KEY_VIDEO</myvideo> + <mymusic>KEY_AUDIO</mymusic> + <mypictures>KEY_MHP</mypictures> + <mypictures>KEY_CAMERA</mypictures> + <mytv>KEY_TV</mytv> + <liveradio>KEY_RADIO</liveradio> + <livetv>KEY_TUNER</livetv> + <one>KEY_1</one> + <two>KEY_2</two> + <three>KEY_3</three> + <four>KEY_4</four> + <five>KEY_5</five> + <six>KEY_6</six> + <seven>KEY_7</seven> + <eight>KEY_8</eight> + <nine>KEY_9</nine> + <zero>KEY_0</zero> + <one>KEY_NUMERIC_1</one> + <two>KEY_NUMERIC_2</two> + <three>KEY_NUMERIC_3</three> + <four>KEY_NUMERIC_4</four> + <five>KEY_NUMERIC_5</five> + <six>KEY_NUMERIC_6</six> + <seven>KEY_NUMERIC_7</seven> + <eight>KEY_NUMERIC_8</eight> + <nine>KEY_NUMERIC_9</nine> + <zero>KEY_NUMERIC_0</zero> + <star>KEY_NUMERIC_STAR</star> + <hash>KEY_NUMERIC_POUND</hash> + <red>KEY_RED</red> + <green>KEY_GREEN</green> + <yellow>KEY_YELLOW</yellow> + <blue>KEY_BLUE</blue> + <menu>KEY_DVD</menu> + <menu>KEY_MENU</menu> + <info>KEY_INFO</info> + <info>KEY_PROPS</info> + <display>KEY_ANGLE</display> + <display>KEY_ZOOM</display> + <recordedtv>KEY_PVR</recordedtv> + <teletext>KEY_TEXT</teletext> + <clear>KEY_DELETE</clear> + </remote> + <remote device="mediacenter"> + <pause>pause</pause> + <stop>stop</stop> + <forward>fwd</forward> + <reverse>rew</reverse> + <left>left</left> + <right>right</right> + <up>up</up> + <down>down</down> + <select>ok</select> + <pageplus>ch+</pageplus> + <pageminus>ch-</pageminus> + <back>back</back> + <menu>clear</menu> + <title>play</title> + <info>info</info> + <skipplus>next</skipplus> + <skipminus>prev</skipminus> + <display>teletext</display> + <start>ehome</start> + <record>rec</record> + <volumeplus>vol+</volumeplus> + <volumeminus>vol-</volumeminus> + <mute>mute</mute> + <power>power</power> + <myvideo>video</myvideo> + <mymusic>music</mymusic> + <mypictures>pictures</mypictures> + <mytv>tv</mytv> + <one>1</one> + <two>2</two> + <three>3</three> + <four>4</four> + <five>5</five> + <six>6</six> + <seven>7</seven> + <eight>8</eight> + <nine>9</nine> + <zero>0</zero> + <mytv>red</mytv> + <mymusic>green</mymusic> + <mypictures>yellow</mypictures> + <myvideo>blue</myvideo> + </remote> + + <remote device="devinput"> + <left>KEY_LEFT</left> + <right>KEY_RIGHT</right> + <up>KEY_UP</up> + <down>KEY_DOWN</down> + <select>KEY_OK</select> + <enter>KEY_ENTER</enter> + <clear>KEY_DELETE</clear> + <start>KEY_MEDIA</start> + <back>KEY_EXIT</back> + <record>KEY_RECORD</record> + <play>KEY_PLAY</play> + <pause>KEY_PAUSE</pause> + <stop>KEY_STOP</stop> + <forward>KEY_FASTFORWARD</forward> + <reverse>KEY_REWIND</reverse> + <volumeplus>KEY_VOLUMEUP</volumeplus> + <volumeminus>KEY_VOLUMEDOWN</volumeminus> + <pageplus>KEY_CHANNELUP</pageplus> + <pageminus>KEY_CHANNELDOWN</pageminus> + <skipplus>KEY_NEXT</skipplus> + <skipminus>KEY_PREVIOUS</skipminus> + <guide>KEY_EPG</guide> + <title>KEY_TITLE</title> + <subtitle>KEY_SUBTITLE</subtitle> + <language>KEY_LANGUAGE</language> + <info>KEY_INFO</info> + <display>KEY_ZOOM</display> + <mute>KEY_MUTE</mute> + <power>KEY_POWER</power> + <eject>KEY_EJECTCD</eject> + <eject>KEY_EJECTCLOSECD</eject> + <menu>KEY_DVD</menu> + <menu>KEY_MENU</menu> + <myvideo>KEY_VIDEO</myvideo> + <mymusic>KEY_AUDIO</mymusic> + <mypictures>KEY_CAMERA</mypictures> + <livetv>KEY_TUNER</livetv> + <mytv>KEY_TV</mytv> + <teletext>KEY_TEXT</teletext> + <one>KEY_NUMERIC_1</one> + <two>KEY_NUMERIC_2</two> + <three>KEY_NUMERIC_3</three> + <four>KEY_NUMERIC_4</four> + <five>KEY_NUMERIC_5</five> + <six>KEY_NUMERIC_6</six> + <seven>KEY_NUMERIC_7</seven> + <eight>KEY_NUMERIC_8</eight> + <nine>KEY_NUMERIC_9</nine> + <zero>KEY_NUMERIC_0</zero> + <star>KEY_NUMERIC_STAR</star> + <hash>KEY_NUMERIC_POUND</hash> + <red>KEY_RED</red> + <green>KEY_GREEN</green> + <yellow>KEY_YELLOW</yellow> + <blue>KEY_BLUE</blue> + <recordedtv>KEY_PVR</recordedtv> + <liveradio>KEY_RADIO</liveradio> + </remote> + + <remote device="devinput-32"> + <left>KEY_LEFT</left> + <right>KEY_RIGHT</right> + <up>KEY_UP</up> + <down>KEY_DOWN</down> + <select>KEY_OK</select> + <enter>KEY_ENTER</enter> + <clear>KEY_DELETE</clear> + <start>KEY_MEDIA</start> + <back>KEY_EXIT</back> + <record>KEY_RECORD</record> + <play>KEY_PLAY</play> + <pause>KEY_PAUSE</pause> + <stop>KEY_STOP</stop> + <forward>KEY_FASTFORWARD</forward> + <reverse>KEY_REWIND</reverse> + <volumeplus>KEY_VOLUMEUP</volumeplus> + <volumeminus>KEY_VOLUMEDOWN</volumeminus> + <pageplus>KEY_CHANNELUP</pageplus> + <pageminus>KEY_CHANNELDOWN</pageminus> + <skipplus>KEY_NEXT</skipplus> + <skipminus>KEY_PREVIOUS</skipminus> + <guide>KEY_EPG</guide> + <title>KEY_TITLE</title> + <subtitle>KEY_SUBTITLE</subtitle> + <language>KEY_LANGUAGE</language> + <info>KEY_INFO</info> + <display>KEY_ZOOM</display> + <mute>KEY_MUTE</mute> + <power>KEY_POWER</power> + <eject>KEY_EJECTCD</eject> + <eject>KEY_EJECTCLOSECD</eject> + <menu>KEY_DVD</menu> + <menu>KEY_MENU</menu> + <myvideo>KEY_VIDEO</myvideo> + <mymusic>KEY_AUDIO</mymusic> + <mypictures>KEY_CAMERA</mypictures> + <livetv>KEY_TUNER</livetv> + <mytv>KEY_TV</mytv> + <teletext>KEY_TEXT</teletext> + <one>KEY_NUMERIC_1</one> + <two>KEY_NUMERIC_2</two> + <three>KEY_NUMERIC_3</three> + <four>KEY_NUMERIC_4</four> + <five>KEY_NUMERIC_5</five> + <six>KEY_NUMERIC_6</six> + <seven>KEY_NUMERIC_7</seven> + <eight>KEY_NUMERIC_8</eight> + <nine>KEY_NUMERIC_9</nine> + <zero>KEY_NUMERIC_0</zero> + <star>KEY_NUMERIC_STAR</star> + <hash>KEY_NUMERIC_POUND</hash> + <red>KEY_RED</red> + <green>KEY_GREEN</green> + <yellow>KEY_YELLOW</yellow> + <blue>KEY_BLUE</blue> + <recordedtv>KEY_PVR</recordedtv> + <liveradio>KEY_RADIO</liveradio> + </remote> + + <remote device="devinput-64"> + <left>KEY_LEFT</left> + <right>KEY_RIGHT</right> + <up>KEY_UP</up> + <down>KEY_DOWN</down> + <select>KEY_OK</select> + <enter>KEY_ENTER</enter> + <clear>KEY_DELETE</clear> + <start>KEY_MEDIA</start> + <back>KEY_EXIT</back> + <record>KEY_RECORD</record> + <play>KEY_PLAY</play> + <pause>KEY_PAUSE</pause> + <stop>KEY_STOP</stop> + <forward>KEY_FASTFORWARD</forward> + <reverse>KEY_REWIND</reverse> + <volumeplus>KEY_VOLUMEUP</volumeplus> + <volumeminus>KEY_VOLUMEDOWN</volumeminus> + <pageplus>KEY_CHANNELUP</pageplus> + <pageminus>KEY_CHANNELDOWN</pageminus> + <skipplus>KEY_NEXT</skipplus> + <skipminus>KEY_PREVIOUS</skipminus> + <guide>KEY_EPG</guide> + <title>KEY_TITLE</title> + <subtitle>KEY_SUBTITLE</subtitle> + <language>KEY_LANGUAGE</language> + <info>KEY_INFO</info> + <display>KEY_ZOOM</display> + <mute>KEY_MUTE</mute> + <power>KEY_POWER</power> + <eject>KEY_EJECTCD</eject> + <eject>KEY_EJECTCLOSECD</eject> + <menu>KEY_DVD</menu> + <menu>KEY_MENU</menu> + <myvideo>KEY_VIDEO</myvideo> + <mymusic>KEY_AUDIO</mymusic> + <mypictures>KEY_CAMERA</mypictures> + <livetv>KEY_TUNER</livetv> + <mytv>KEY_TV</mytv> + <teletext>KEY_TEXT</teletext> + <one>KEY_NUMERIC_1</one> + <two>KEY_NUMERIC_2</two> + <three>KEY_NUMERIC_3</three> + <four>KEY_NUMERIC_4</four> + <five>KEY_NUMERIC_5</five> + <six>KEY_NUMERIC_6</six> + <seven>KEY_NUMERIC_7</seven> + <eight>KEY_NUMERIC_8</eight> + <nine>KEY_NUMERIC_9</nine> + <zero>KEY_NUMERIC_0</zero> + <star>KEY_NUMERIC_STAR</star> + <hash>KEY_NUMERIC_POUND</hash> + <red>KEY_RED</red> + <green>KEY_GREEN</green> + <yellow>KEY_YELLOW</yellow> + <blue>KEY_BLUE</blue> + <recordedtv>KEY_PVR</recordedtv> + <liveradio>KEY_RADIO</liveradio> + </remote> +</lircmap> diff --git a/system/X10-Lola-IRSSmap.xml b/system/X10-Lola-IRSSmap.xml new file mode 100644 index 0000000..e0a47d7 --- /dev/null +++ b/system/X10-Lola-IRSSmap.xml @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- X10 Lola UR89A in PC MODE +Button = CMD +Record = X10CMD_RECORD +Stop = X10CMD_STOP +Pause = X10CMD_NONE +Scan- = X10CMD_INPUT +Rew = X10CMD_REWIND +Play = X10CMD_PLAY +FF = X10CMD_FF +Scan+ = X10CMD_ZOOM +Top = X10CMD_MTRADIO +End = X10CMD_MTPC +Find = X10CMD_HANDSYMBOL +Select = X10CMD_MTCHANNELLIST +Page Up = X10CMD_BOOKMARK +Page Dn = X10CMD_RESIZE +Playlist = X10CMD_BUTTON_B +Playing = X10CMD_MTVCR +Left = X10CMD_LEFT +Right = X10CMD_RIGHT +Up = X10CMD_UP +Down = X10CMD_DN +Enter = X10CMD_ENTER +Album = X10CMD_BUTTON_C +Artist = X10CMD_BUTTON_D +Genre = X10CMD_BUTTON_E +Track = X10CMD_BUTTON_F +1 = X10CMD_1 +2 = X10CMD_2 +3 = X10CMD_3 +4 = X10CMD_4 +5 = X10CMD_5 +6 = X10CMD_6 +7 = X10CMD_7 +8 = X10CMD_8 +9 = X10CMD_9 +0 = X10CMD_0 +Add/Del = X10CMD_MTADDDELETE +A/B = X10CMT_MTAB +Vol Left = X10CMD_VOL_UP (this button is actually labeled Vol-) +Vol Right = X10CMD_VOL_DN (this button is actually labeled Vol+) +Chan Up = X10CMD_CH_UP +Chan Down = X10CMD_CH_DN +M/All Off = X10CMD_MUTE +Power/All Lts On = X10CMD_POWER + --> +<irssmap> + <remote device="X10"> + <pause>X10CMD_NONE</pause> <!-- Pause --> + <stop>X10CMD_STOP</stop> <!-- Stop --> + <play>X10CMD_PLAY</play> <!-- Play --> + <forward>X10CMD_FF</forward> <!-- FF --> + <reverse>X10CMD_REWIND</reverse> <!-- Rew --> + <left>X10CMD_LEFT</left> <!-- Left --> + <right>X10CMD_RIGHT</right> <!-- Right --> + <up>X10CMD_UP</up> <!-- Up --> + <down>X10CMD_DN</down> <!-- Down --> + <select>X10CMD_ENTER</select> <!-- Enter --> + <pageplus>X10CMD_BOOKMARK</pageplus> <!-- Page Up --> + <pageminus>X10CMD_RESIZE</pageminus> <!-- Page Down --> + <back>X10CMD_MTAB</back> <!-- A/B --> + <menu>X10CMD_MTRADIO</menu> <!-- Top --> + <title>X10CMD_MTPC</title> <!-- End --> + <info>X10CMD_HANDSYMBOL</info> <!-- Find --> + <skipplus>X10CMD_INPUT</skipplus> <!-- Scan- --> + <skipminus>X10CMD_ZOOM</skipminus> <!-- Scan+ --> + <display>X10CMD_MTVCR</display> <!-- Playing --> + <start>X10CMD_MTCHANNELLIST</start> <!-- Select --> + <record>X10CMD_RECORD</record> <!-- Rec --> + <mute>X10CMD_MUTE</mute> <!-- M/All off --> + <power>X10CMD_POWER</power> <!-- Power/All Lts on --> + <one>X10CMD_1</one> <!-- 1 --> + <two>X10CMD_2</two> <!-- 2 --> + <three>X10CMD_3</three> <!-- 3 --> + <four>X10CMD_4</four> <!-- 4 --> + <five>X10CMD_5</five> <!-- 5 --> + <six>X10CMD_6</six> <!-- 6 --> + <seven>X10CMD_7</seven> <!-- 7 --> + <eight>X10CMD_8</eight> <!-- 8 --> + <nine>X10CMD_9</nine> <!-- 9 --> + <zero>X10CMD_0</zero> <!-- 0 --> + <channelplus>X10CMD_CH_UP</channelplus> <!-- CH+ --> + <channelminus>X10CMD_CH_DN</channelminus> <!-- CH- --> + <volumeplus>X10CMD_VOL_DN</volumeplus> <!-- VOL+ (volume commands are reversed) --> + <volumeminus>X10CMD_VOL_UP</volumeminus> <!-- VOL- (volume commands are reversed) --> + <livetv>X10CMD_BUTTON_B</livetv> <!-- Playlist --> + <star></star> + <hash></hash> + <clear>X10CMD_MTADDDELETE</clear> <!-- Add/Delete --> + <mytv></mytv> + <mymusic></mymusic> + <mypictures></mypictures> + <myvideo></myvideo> + </remote> +</irssmap> diff --git a/system/addon-manifest.xml b/system/addon-manifest.xml new file mode 100644 index 0000000..7df13a6 --- /dev/null +++ b/system/addon-manifest.xml @@ -0,0 +1,59 @@ +<addons> + <addon>audioencoder.kodi.builtin.aac</addon> + <addon>audioencoder.kodi.builtin.wma</addon> + <addon>game.controller.default</addon> + <addon>game.controller.keyboard</addon> + <addon>game.controller.mouse</addon> + <addon>game.controller.snes</addon> + <addon>kodi.binary.global.audioengine</addon> + <addon>kodi.binary.global.filesystem</addon> + <addon>kodi.binary.global.general</addon> + <addon>kodi.binary.global.gui</addon> + <addon>kodi.binary.global.main</addon> + <addon>kodi.binary.global.network</addon> + <addon>kodi.binary.global.tools</addon> + <addon>kodi.binary.instance.audiodecoder</addon> + <addon>kodi.binary.instance.audioencoder</addon> + <addon>kodi.binary.instance.game</addon> + <addon>kodi.binary.instance.imagedecoder</addon> + <addon>kodi.binary.instance.inputstream</addon> + <addon>kodi.binary.instance.peripheral</addon> + <addon>kodi.binary.instance.pvr</addon> + <addon>kodi.binary.instance.screensaver</addon> + <addon>kodi.binary.instance.vfs</addon> + <addon>kodi.binary.instance.videocodec</addon> + <addon>kodi.binary.instance.visualization</addon> + <addon>kodi.resource</addon> + <addon>metadata.album.universal</addon> + <addon>metadata.artists.universal</addon> + <addon>metadata.common.allmusic.com</addon> + <addon>metadata.common.fanart.tv</addon> + <addon>metadata.common.musicbrainz.org</addon> + <addon>metadata.common.theaudiodb.com</addon> + <addon>metadata.generic.albums</addon> + <addon>metadata.generic.artists</addon> + <addon>metadata.local</addon> + <addon>metadata.themoviedb.org.python</addon> + <addon>metadata.tvshows.themoviedb.org.python</addon> + <addon>repository.xbmc.org</addon> + <addon>resource.images.weathericons.default</addon> + <addon>resource.language.en_gb</addon> + <addon>resource.uisounds.kodi</addon> + <addon>screensaver.xbmc.builtin.black</addon> + <addon>screensaver.xbmc.builtin.dim</addon> + <addon>script.module.pil</addon> + <addon>script.module.pycryptodome</addon> + <addon>skin.estouchy</addon> + <addon>skin.estuary</addon> + <addon>webinterface.default</addon> + <addon>xbmc.addon</addon> + <addon>xbmc.core</addon> + <addon>xbmc.gui</addon> + <addon>xbmc.json</addon> + <addon>xbmc.metadata</addon> + <addon>xbmc.python</addon> + <addon>xbmc.webinterface</addon> + <addon optional="true">inputstream.adaptive</addon> + <addon optional="true">peripheral.joystick</addon> + <addon optional="true">service.xbmc.versioncheck</addon> +</addons> diff --git a/system/colors.xml b/system/colors.xml new file mode 100644 index 0000000..12903e5 --- /dev/null +++ b/system/colors.xml @@ -0,0 +1,153 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- http://www.w3.org/TR/css3-color/#colorunits --> +<colors> + <color name="aliceblue">fff0f8ff</color> + <color name="antiquewhite">fffaebd7</color> + <color name="aqua">ff00ffff</color> + <color name="aquamarine">ff7fffd4</color> + <color name="azure">fff0ffff</color> + <color name="beige">fff5f5dc</color> + <color name="bisque">ffffe4c4</color> + <color name="black">ff000000</color> + <color name="blanchedalmond">ffffebcd</color> + <color name="blue">ff0000ff</color> + <color name="blueviolet">ff8a2be2</color> + <color name="brown">ffa52a2a</color> + <color name="burlywood">ffdeb887</color> + <color name="cadetblue">ff5f9ea0</color> + <color name="chartreuse">ff7fff00</color> + <color name="chocolate">ffd2691e</color> + <color name="coral">ffff7f50</color> + <color name="cornflowerblue">ff6495ed</color> + <color name="cornsilk">fffff8dc</color> + <color name="crimson">ffdc143c</color> + <color name="cyan">ff00ffff</color> + <color name="darkblue">ff00008b</color> + <color name="darkcyan">ff008b8b</color> + <color name="darkgoldenrod">ffb8860b</color> + <color name="darkgray">ffa9a9a9</color> + <color name="darkgreen">ff006400</color> + <color name="darkgrey">ffa9a9a9</color> + <color name="darkkhaki">ffbdb76b</color> + <color name="darkmagenta">ff8b008b</color> + <color name="darkolivegreen">ff556b2f</color> + <color name="darkorange">ffff8c00</color> + <color name="darkorchid">ff9932cc</color> + <color name="darkred">ff8b0000</color> + <color name="darksalmon">ffe9967a</color> + <color name="darkseagreen">ff8fbc8f</color> + <color name="darkslateblue">ff483d8b</color> + <color name="darkslategray">ff2f4f4f</color> + <color name="darkslategrey">ff2f4f4f</color> + <color name="darkturquoise">ff00ced1</color> + <color name="darkviolet">ff9400d3</color> + <color name="deeppink">ffff1493</color> + <color name="deepskyblue">ff00bfff</color> + <color name="dimgray">ff696969</color> + <color name="dimgrey">ff696969</color> + <color name="dodgerblue">ff1e90ff</color> + <color name="firebrick">ffb22222</color> + <color name="floralwhite">fffffaf0</color> + <color name="forestgreen">ff228b22</color> + <color name="fuchsia">ffff00ff</color> + <color name="gainsboro">ffdcdcdc</color> + <color name="ghostwhite">fff8f8ff</color> + <color name="gold">ffffd700</color> + <color name="goldenrod">ffdaa520</color> + <color name="gray">ff808080</color> + <color name="green">ff008000</color> + <color name="greenyellow">ffadff2f</color> + <color name="grey">ff808080</color> + <color name="honeydew">fff0fff0</color> + <color name="hotpink">ffff69b4</color> + <color name="indianred">ffcd5c5c</color> + <color name="indigo">ff4b0082</color> + <color name="ivory">fffffff0</color> + <color name="khaki">fff0e68c</color> + <color name="lavender">ffe6e6fa</color> + <color name="lavenderblush">fffff0f5</color> + <color name="lawngreen">ff7cfc00</color> + <color name="lemonchiffon">fffffacd</color> + <color name="lightblue">ffadd8e6</color> + <color name="lightcoral">fff08080</color> + <color name="lightcyan">ffe0ffff</color> + <color name="lightgoldenrodyellow">fffafad2</color> + <color name="lightgray">ffd3d3d3</color> + <color name="lightgreen">ff90ee90</color> + <color name="lightgrey">ffd3d3d3</color> + <color name="lightpink">ffffb6c1</color> + <color name="lightsalmon">ffffa07a</color> + <color name="lightseagreen">ff20b2aa</color> + <color name="lightskyblue">ff87cefa</color> + <color name="lightslategray">ff778899</color> + <color name="lightslategrey">ff778899</color> + <color name="lightsteelblue">ffb0c4de</color> + <color name="lightyellow">ffffffe0</color> + <color name="lime">ff00ff00</color> + <color name="limegreen">ff32cd32</color> + <color name="linen">fffaf0e6</color> + <color name="magenta">ffff00ff</color> + <color name="maroon">ff800000</color> + <color name="mediumaquamarine">ff66cdaa</color> + <color name="mediumblue">ff0000cd</color> + <color name="mediumorchid">ffba55d3</color> + <color name="mediumpurple">ff9370db</color> + <color name="mediumseagreen">ff3cb371</color> + <color name="mediumslateblue">ff7b68ee</color> + <color name="mediumspringgreen">ff00fa9a</color> + <color name="mediumturquoise">ff48d1cc</color> + <color name="mediumvioletred">ffc71585</color> + <color name="midnightblue">ff191970</color> + <color name="mintcream">fff5fffa</color> + <color name="mistyrose">ffffe4e1</color> + <color name="moccasin">ffffe4b5</color> + <color name="navajowhite">ffffdead</color> + <color name="navy">ff000080</color> + <color name="none">00000000</color> + <color name="oldlace">fffdf5e6</color> + <color name="olive">ff808000</color> + <color name="olivedrab">ff6b8e23</color> + <color name="orange">ffffa500</color> + <color name="orangered">ffff4500</color> + <color name="orchid">ffda70d6</color> + <color name="palegoldenrod">ffeee8aa</color> + <color name="palegreen">ff98fb98</color> + <color name="paleturquoise">ffafeeee</color> + <color name="palevioletred">ffdb7093</color> + <color name="papayawhip">ffffefd5</color> + <color name="peachpuff">ffffdab9</color> + <color name="peru">ffcd853f</color> + <color name="pink">ffffc0cb</color> + <color name="plum">ffdda0dd</color> + <color name="powderblue">ffb0e0e6</color> + <color name="purple">ff800080</color> + <color name="red">ffff0000</color> + <color name="rosybrown">ffbc8f8f</color> + <color name="royalblue">ff4169e1</color> + <color name="saddlebrown">ff8b4513</color> + <color name="salmon">fffa8072</color> + <color name="sandybrown">fff4a460</color> + <color name="seagreen">ff2e8b57</color> + <color name="seashell">fffff5ee</color> + <color name="sienna">ffa0522d</color> + <color name="silver">ffc0c0c0</color> + <color name="skyblue">ff87ceeb</color> + <color name="slateblue">ff6a5acd</color> + <color name="slategray">ff708090</color> + <color name="slategrey">ff708090</color> + <color name="snow">fffffafa</color> + <color name="springgreen">ff00ff7f</color> + <color name="steelblue">ff4682b4</color> + <color name="tan">ffd2b48c</color> + <color name="teal">ff008080</color> + <color name="thistle">ffd8bfd8</color> + <color name="tomato">ffff6347</color> + <color name="transparent">00000000</color> + <color name="turquoise">ff40e0d0</color> + <color name="violet">ffee82ee</color> + <color name="wheat">fff5deb3</color> + <color name="white">ffffffff</color> + <color name="whitesmoke">fff5f5f5</color> + <color name="yellow">ffffff00</color> + <color name="yellowgreen">ff9acd32</color> +</colors> diff --git a/system/dialogcolors.xml b/system/dialogcolors.xml new file mode 100644 index 0000000..12af216 --- /dev/null +++ b/system/dialogcolors.xml @@ -0,0 +1,166 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- https://en.wikipedia.org/wiki/List_of_Crayola_crayon_colors --> +<colors> + <color name="Almond">FFEFDECD</color> + <color name="Antique Brass">FFCD9575</color> + <color name="Apple Orchard">FFBF3F3F</color> + <color name="Apricot">FFFDD9B5</color> + <color name="Aquamarine">FF78DBE2</color> + <color name="Asparagus">FF87A96B</color> + <color name="Atomic Tangerine">FFFFA474</color> + <color name="Banana Mania">FFFAE7B5</color> + <color name="Beaver">FF9F8170</color> + <color name="Berry Parfait">FFA43482</color> + <color name="Bittersweet">FFFD7C6E</color> + <color name="Black">FF000000</color> + <color name="Blizzard Blue">FFACE5EE</color> + <color name="Blue Bell">FFA2A2D0</color> + <color name="Blue Gray">FF6699CC</color> + <color name="Blue Green">FF0D98BA</color> + <color name="Blue Violet">FF7366BD</color> + <color name="Blue">FF1F75FE</color> + <color name="Blush">FFDE5D83</color> + <color name="Brick Red">FFCB4154</color> + <color name="Bright Gray">ffeeeeee</color> + <color name="Brown">FFB4674D</color> + <color name="Bubble Gum">FFDF9ACA</color> + <color name="Burnt Orange">FFFF7F49</color> + <color name="Burnt Sienna">FFEA7E5D</color> + <color name="Butternut Squash">FFE74F00</color> + <color name="Cadet Blue">FFB0B7C6</color> + <color name="Canary">FFFFFF99</color> + <color name="Caribbean Green">FF1CD3A2</color> + <color name="Caribbean Sea">FF67CD95</color> + <color name="Carnation Pink">FFFFAACC</color> + <color name="Cerise">FFDD4492</color> + <color name="Cerulean">FF1DACD6</color> + <color name="Chestnut">FFBC5D58</color> + <color name="Chinese White">ffe0e0e0</color> + <color name="Cloudy Sky">FF548CD0</color> + <color name="Copper">FFDD9475</color> + <color name="Cornflower">FF9ACEEB</color> + <color name="Cotton Candy">FFFFBCD9</color> + <color name="Dandelion">FFFDDB6D</color> + <color name="Denim">FF2B6CC4</color> + <color name="Desert Sand">FFEFCDB8</color> + <color name="Eggplant">FF6E5160</color> + <color name="Electric Lime">FFCEFF1D</color> + <color name="Fern">FF71BC78</color> + <color name="Forest Green">FF6DAE81</color> + <color name="Fuchsia">FFC364C5</color> + <color name="Fuzzy Wuzzy">FFCC6666</color> + <color name="Gold">FFE7C697</color> + <color name="Goldenrod">FFFCD975</color> + <color name="Granite Gray">ff616161</color> + <color name="Granny Smith Apple">FFA8E4A0</color> + <color name="Gray Arsenic">ff424242</color> + <color name="Gray Cultured">fff5f5f5</color> + <color name="Gray Lotion">fffafafa</color> + <color name="Gray XII">ffbdbdbd</color> + <color name="Green Blue">FF1164B4</color> + <color name="Green Yellow">FFF0E891</color> + <color name="Green">FF1CAC78</color> + <color name="Hot Cocoa">FF8F482F</color> + <color name="Hot Magenta">FFFF1DCE</color> + <color name="Inchworm">FFB2EC5D</color> + <color name="Indigo">FF5D76CB</color> + <color name="Iridescent Indigo">FF3C32CD</color> + <color name="Jazzberry Jam">FFCA3767</color> + <color name="Jungle Green">FF3BB08F</color> + <color name="Laser Lemon">FFFEFE22</color> + <color name="Lavender Silk">FF6B4D82</color> + <color name="Lavender">FFFCB4D5</color> + <color name="Leafy Canopy">FF94DDCB</color> + <color name="Lemon Yellow">FFFFF44F</color> + <color name="Liquid Gold">FFFFD966</color> + <color name="Macaroni and Cheese">FFFFBD88</color> + <color name="Magenta">FFF664AF</color> + <color name="Magic Mint">FFAAF0D1</color> + <color name="Mahogany">FFCD4A4C</color> + <color name="Maize">FFEDD19C</color> + <color name="Manatee">FF979AAA</color> + <color name="Mango Purée">FFFF6137</color> + <color name="Mango Tango">FFFF8243</color> + <color name="Maroon">FFC8385A</color> + <color name="Mauvelous">FFEF98AA</color> + <color name="Melon">FFFDBCB4</color> + <color name="Midnight Blue">FF1A4876</color> + <color name="Moonlit Pond">FF4F2CD0</color> + <color name="Mountain Meadow">FF30BA8F</color> + <color name="Mulberry">FFC54B8C</color> + <color name="Navy Blue">FF1974D2</color> + <color name="Neon Carrot">FFFFA343</color> + <color name="Ocean Foam">FF62C9D3</color> + <color name="Olive Green">FFBAB86C</color> + <color name="Orange Peel">FFFF8021</color> + <color name="Orange Red">FFFF2B2B</color> + <color name="Orange Yellow">FFF8D568</color> + <color name="Orange">FFFF7538</color> + <color name="Orchid">FFE6A8D7</color> + <color name="Outer Space">FF414A4C</color> + <color name="Outrageous Orange">FFFF6E4A</color> + <color name="Pacific Blue">FF1CA9C9</color> + <color name="Peach">FFFFCFAB</color> + <color name="Periwinkle">FFC5D0E6</color> + <color name="Pesto">FF5F7B4A</color> + <color name="Piggy Pink">FFFDDDE6</color> + <color name="Pine Green">FF158078</color> + <color name="Pink Flamingo">FFFC74FD</color> + <color name="Pink Luster">FFFFB2E7</color> + <color name="Pink Sherbet">FFF78FA7</color> + <color name="Plum">FF8E4585</color> + <color name="Purple Heart">FF7442C8</color> + <color name="Purple Mountain's Majesty">FF9D81BA</color> + <color name="Purple Pizzazz">FFFE4EDA</color> + <color name="Radical Red">FFFF496C</color> + <color name="Raisin Black">ff212121</color> + <color name="Raw Sienna">FFD68A59</color> + <color name="Raw Umber">FF714B23</color> + <color name="Razzle Dazzle Rose">FFFF48D0</color> + <color name="Razzmatazz">FFE3256B</color> + <color name="Red Orange">FFFF5349</color> + <color name="Red Satin">FF9F3434</color> + <color name="Red Violet">FFC0448F</color> + <color name="Red">FFEE204D</color> + <color name="Robin's Egg Blue">FF1FCECB</color> + <color name="Royal Purple">FF7851A9</color> + <color name="Salmon">FFFF9BAA</color> + <color name="Scarlet">FFFC2847</color> + <color name="Screamin' Green">FF76FF7A</color> + <color name="Sea Glass">FFC4EA7F</color> + <color name="Sea Green">FF9FE2BF</color> + <color name="Sepia">FFA5694F</color> + <color name="Shadow">FF8A795D</color> + <color name="Shamrock">FF45CEA2</color> + <color name="Shocking Pink">FFFB7EFD</color> + <color name="Shooting Star">FFFFFF65</color> + <color name="Sky Blue">FF80DAEB</color> + <color name="Sonic Silver">ff757575</color> + <color name="Spanish Gray">ff9e9e9e</color> + <color name="Spring Green">FFECEABE</color> + <color name="Sunglow">FFFFCF48</color> + <color name="Sunset Orange">FFFD5E53</color> + <color name="Sunset Shimmer">FFF79015</color> + <color name="Tan">FFFAA76C</color> + <color name="Teal Blue">FF18A7B5</color> + <color name="Thistle">FFEBC7DF</color> + <color name="Tickle Me Pink">FFFC89AC</color> + <color name="Timberwolf">FFDBD7D2</color> + <color name="Tropical Rain Forest">FF17806D</color> + <color name="Tumbleweed">FFDEAA88</color> + <color name="Turquoise Blue">FF77DDE7</color> + <color name="Unmellow Yellow">FFFFFF66</color> + <color name="Violet (Purple)">FF926EAE</color> + <color name="Violet Blue">FF324AB2</color> + <color name="Violet Red">FFF75394</color> + <color name="Vivid Tangerine">FFFFA089</color> + <color name="Vivid Violet">FF8F509D</color> + <color name="White">FFFFFFFF</color> + <color name="Wild Blue Yonder">FFA2ADD0</color> + <color name="Wild Strawberry">FFFF43A4</color> + <color name="Wild Watermelon">FFFC6C85</color> + <color name="Wisteria">FFCDA4DE</color> + <color name="Yellow Green">FFC5E384</color> + <color name="Yellow Orange">FFFFAE42</color> + <color name="Yellow">FFFCE883</color> +</colors> diff --git a/system/keyboardlayouts/arabic.xml b/system/keyboardlayouts/arabic.xml new file mode 100644 index 0000000..3b37ff0 --- /dev/null +++ b/system/keyboardlayouts/arabic.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Arabic" layout="QWERTY"> + <keyboard> + <row>١٢٣٤٥٦٧٨٩٠</row> + <row>ضصثقفغعهخحج</row> + <row>شسيبلاتنمكة</row> + <row>ءظطذدزروی</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890</row> + <row>أإآؤ</row> + <row>ـئ‘،؛</row> + <row>ًٌٍََُِّْ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~؟</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/bulgarian.xml b/system/keyboardlayouts/bulgarian.xml new file mode 100644 index 0000000..dee53f5 --- /dev/null +++ b/system/keyboardlayouts/bulgarian.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Bulgarian" layout="ЯВЕРТЪ"> + <keyboard> + <row>ч1234567890</row> + <row>явертъуиопшщ</row> + <row>асдфгхйклю</row> + <row>зьцжбнм</row> + </keyboard> + <keyboard modifiers="shift"> + <row>Ч1234567890</row> + <row>ЯВЕРТЪУИОПШЩ</row> + <row>АСДФГХЙКЛЮ</row> + <row>ЗЬЦЖБНМ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> + <layout language="Bulgarian" layout="АБВ"> + <keyboard> + <row>0123456789</row> + <row>абвгдежзий</row> + <row>клмнопрсту</row> + <row>фхцчшщъьюя</row> + </keyboard> + <keyboard modifiers="shift"> + <row>0123456789</row> + <row>АБВГДЕЖЗИЙ</row> + <row>КЛМНОПРСТУ</row> + <row>ФХЦЧШЩЪЬЮЯ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/chinese.xml b/system/keyboardlayouts/chinese.xml new file mode 100644 index 0000000..2bd6f12 --- /dev/null +++ b/system/keyboardlayouts/chinese.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Chinese" layout="BasePY" codingtable="BasePY"> + <keyboard> + <row>0123456789</row> + <row>qwertyuiop</row> + <row>asdfghjkl</row> + <row>zxcvbnm</row> + </keyboard> + <keyboard modifiers="shift"> + <row>0123456789</row> + <row>QWERTYUIOP</row> + <row>ASDFGHJKL</row> + <row>ZXCVBNM</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/croatian.xml b/system/keyboardlayouts/croatian.xml new file mode 100644 index 0000000..3f3fca7 --- /dev/null +++ b/system/keyboardlayouts/croatian.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Croatian" layout="QWERTY"> + <keyboard> + <row>1234567890'+</row> + <row>qwertzuiopšđ</row> + <row>asdfghjklčćž:</row> + <row>yxcvbnm,.-</row> + </keyboard> + <keyboard modifiers="shift"> + <row>!"#$%&/()=?*</row> + <row>QWERTZUIOPŠĐ</row> + <row>ASDFGHJKLČĆŽ</row> + <row>YXCVBNM;:_</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/czech.xml b/system/keyboardlayouts/czech.xml new file mode 100644 index 0000000..4c31abd --- /dev/null +++ b/system/keyboardlayouts/czech.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Czech" layout="QWERTZ"> + <keyboard> + <row>ťěščřžýáíéó(</row> + <row>qwertzuiopú)</row> + <row>asdfghjklůď_</row> + <row>/yxcvbnmň:.-</row> + </keyboard> + <keyboard modifiers="shift"> + <row>ŤĚŠČŘŽÝÁÍÉÓ(</row> + <row>QWERTZUIOPÚ)</row> + <row>ASDFGHJKLŮĎ_</row> + <row>\YXCVBNMŇ:.-</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>1234567890%</row> + <row>+@#$~^&*{}=</row> + <row>[]()/"'`;!</row> + <row>\|<>,.?:-_</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/danish.xml b/system/keyboardlayouts/danish.xml new file mode 100644 index 0000000..2ceffec --- /dev/null +++ b/system/keyboardlayouts/danish.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Danish" layout="QWERTY"> + <keyboard> + <row>1234567890</row> + <row>qwertyuiopå</row> + <row>asdfghjklæø</row> + <row>zxcvbnm</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890</row> + <row>QWERTYUIOPÅ</row> + <row>ASDFGHJKLÆØ</row> + <row>ZXCVBNM</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/english.xml b/system/keyboardlayouts/english.xml new file mode 100644 index 0000000..760ac81 --- /dev/null +++ b/system/keyboardlayouts/english.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="English" layout="QWERTY"> + <keyboard> + <row>1234567890-=`</row> + <row>qwertyuiop[]\</row> + <row>asdfghjkl;'</row> + <row>zxcvbnm,./</row> + </keyboard> + <keyboard modifiers="shift"> + <row>!@#$%^&*()_+~</row> + <row>QWERTYUIOP{}|</row> + <row>ASDFGHJKL:"</row> + <row>ZXCVBNM<>?</row> + </keyboard> + <keyboard modifiers="symbol"> + <row>£¥€§±µ¤«»·</row> + <row>áàâäãåæçéè</row> + <row>êëíìîïñóòô</row> + <row>öõøœßúùûü</row> + </keyboard> + <keyboard modifiers="shift+symbol"> + <row>¼½¾¹²³°ªº¨</row> + <row>ÁÀÂÄÃÅÆÇÉÈ</row> + <row>ÊËÍÌÎÏÑÓÒÔ</row> + <row>ÖÕØŒẞÚÙÛÜ</row> + </keyboard> + </layout> + <layout language="English" layout="AZERTY"> + <keyboard> + <row>1234567890-=`</row> + <row>azertyuiop[]\</row> + <row>qsdfghjklm;'</row> + <row>wxcvbn,./</row> + </keyboard> + <keyboard modifiers="shift"> + <row>!@#$%^&*()_+~</row> + <row>AZERTYUIOP{}|</row> + <row>QSDFGHJKLM:"</row> + <row>WXCVBN<>?</row> + </keyboard> + <keyboard modifiers="symbol"> + <row>£¥€§±µ¤«»·</row> + <row>áàâäãåæçéè</row> + <row>êëíìîïñóòô</row> + <row>öõøœßúùûü</row> + </keyboard> + <keyboard modifiers="shift+symbol"> + <row>¼½¾¹²³°ªº¨</row> + <row>ÁÀÂÄÃÅÆÇÉÈ</row> + <row>ÊËÍÌÎÏÑÓÒÔ</row> + <row>ÖÕØŒẞÚÙÛÜ</row> + </keyboard> + </layout> + <layout language="English" layout="ABC"> + <keyboard> + <row>1234567890-=`</row> + <row>abcdefghij[]\</row> + <row>klmnopqrst;'</row> + <row>uvwxyz,./</row> + </keyboard> + <keyboard modifiers="shift"> + <row>!@#$%^&*()_+~</row> + <row>ABCDEFGHIJ{}|</row> + <row>KLMNOPQRST:"</row> + <row>UVWXYZ<>?</row> + </keyboard> + <keyboard modifiers="symbol"> + <row>£¥€§±µ¤«»·</row> + <row>áàâäãåæçéè</row> + <row>êëíìîïñóòô</row> + <row>öõøœßúùûü</row> + </keyboard> + <keyboard modifiers="shift+symbol"> + <row>¼½¾¹²³°ªº¨</row> + <row>ÁÀÂÄÃÅÆÇÉÈ</row> + <row>ÊËÍÌÎÏÑÓÒÔ</row> + <row>ÖÕØŒẞÚÙÛÜ</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/estonian.xml b/system/keyboardlayouts/estonian.xml new file mode 100644 index 0000000..96b94d3 --- /dev/null +++ b/system/keyboardlayouts/estonian.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Estonian" layout="QWERTY"> + <keyboard> + <row>1234567890</row> + <row>qwertyuiopüõ</row> + <row>asdfghjklöä</row> + <row>zxcvbnm</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890</row> + <row>QWERTYUIOPÜÕ</row> + <row>ASDFGHJKLÖÄ</row> + <row>ZXCVBNM</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/french.xml b/system/keyboardlayouts/french.xml new file mode 100644 index 0000000..630ec32 --- /dev/null +++ b/system/keyboardlayouts/french.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="French" layout="AZERTY"> + <keyboard> + <row>1234567890°+</row> + <row>azertyuiop^$</row> + <row>qsdfghjklmù*</row> + <row><wxcvbn,;:!&</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890@=</row> + <row>AZERTYUIOP¨£</row> + <row>QSDFGHJKLM%µ</row> + <row>>WXCVBN?./§²</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>()[]{}~"'`-_</row> + <row>#|\€¤ÆŒæœüÜÙ</row> + <row>àâçéèêëîïôöû</row> + <row>ÀÂÇÉÈÊËÎÏÔÖÛ</row> + </keyboard> + </layout> +</keyboardlayouts>
\ No newline at end of file diff --git a/system/keyboardlayouts/german.xml b/system/keyboardlayouts/german.xml new file mode 100644 index 0000000..8bde9cb --- /dev/null +++ b/system/keyboardlayouts/german.xml @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="German" layout="QWERTZ"> + <keyboard> + <row>1234567890ß'</row> + <row>qwertzuiopü+</row> + <row>asdfghjklöä#</row> + <row>yxcvbnm,.-/@</row> + </keyboard> + <keyboard modifiers="shift"> + <row>!"§$%&/()=?`</row> + <row>QWERTZUIOPÜ*</row> + <row>ASDFGHJKLÖÄ'</row> + <row>YXCVBNM;:_/@</row> + </keyboard> + <keyboard modifiers="symbol"> + <row>^£€[]{}\|<>µ</row> + <row>áàâäãåæçéè</row> + <row>êëíìîïñóòô</row> + <row>õøœßúùû</row> + </keyboard> + <keyboard modifiers="shift+symbol"> + <row>°¹²³¼½¾±µ¤«»·</row> + <row>ÁÀÂÄÃÅÆÇÉÈ</row> + <row>ÊËÍÌÎÏÑÓÒÔ</row> + <row>ÕØŒẞÚÙÛ</row> + </keyboard> + </layout> + <layout language="German" layout="ABC"> + <keyboard> + <row>1234567890ß'</row> + <row>abcdefghijk+</row> + <row>lmnopqrstuv#</row> + <row>wxyzäöü,.-@</row> + </keyboard> + <keyboard modifiers="shift"> + <row>!"§$%&/()=?`</row> + <row>ABCDEFGHIJK*</row> + <row>LMNOPQRSTUV'</row> + <row>WXYZÄÖÜ;:_@</row> + </keyboard> + <keyboard modifiers="symbol"> + <row>^£€[]{}\|<>µ</row> + <row>áàâäãåæçéè</row> + <row>êëíìîïñóòô</row> + <row>õøœßúùû</row> + </keyboard> + <keyboard modifiers="shift+symbol"> + <row>°¹²³¼½¾±µ¤«»·</row> + <row>ÁÀÂÄÃÅÆÇÉÈ</row> + <row>ÊËÍÌÎÏÑÓÒÔ</row> + <row>ÕØŒẞÚÙÛ</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/greek.xml b/system/keyboardlayouts/greek.xml new file mode 100644 index 0000000..823133a --- /dev/null +++ b/system/keyboardlayouts/greek.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Greek" layout="QWERTY"> + <keyboard> + <row>1234567890</row> + <row>ςερτυθιοπ</row> + <row>ασδφγηξκλ</row> + <row>ζχψωβνμ</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890</row> + <row>ΕΡΤΥΘΙΟΠ</row> + <row>ΑΣΔΦΓΗΞΚΛ</row> + <row>ΖΧΨΩΒΝΜ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#€§$%^&*(</row> + <row>[]{}-_=+;:~</row> + <row>'",.<>/?\|`</row> + <row>έύίόάήώϋϊΰΐ</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/hebrew.xml b/system/keyboardlayouts/hebrew.xml new file mode 100644 index 0000000..8cd23ab --- /dev/null +++ b/system/keyboardlayouts/hebrew.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Hebrew" layout="QWERTY"> + <keyboard> + <row>1234567890</row> + <row>קראטוןםפ</row> + <row>שדגכעיחלךף</row> + <row>זסבהנמצתץ</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890</row> + <row>QWERTYUIOP</row> + <row>ASDFGHJKL</row> + <row>ZXCVBNM</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> + <layout language="Hebrew" layout="ABC"> + <keyboard> + <row>0123456789</row> + <row>יטחזוהדגבא</row> + <row>ףפעסןנםמלכ</row> + <row>תשרקץצ</row> + </keyboard> + <keyboard modifiers="shift"> + <row>0123456789</row> + <row>ABCDEFGHIJ</row> + <row>KLMNOPQRST</row> + <row>UVWXYZ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/hungarian.xml b/system/keyboardlayouts/hungarian.xml new file mode 100644 index 0000000..0d16ceb --- /dev/null +++ b/system/keyboardlayouts/hungarian.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Hungarian" layout="QWERTZ"> + <keyboard> + <row>0123456789öüó</row> + <row>qwertzuiopőú+</row> + <row>asdfghjkléáű-</row> + <row>íyxcvbnm,.?!@</row> + </keyboard> + <keyboard modifiers="shift"> + <row>0123456789ÖÜÓ</row> + <row>QWERTZUIOPŐÚ+</row> + <row>ASDFGHJKLÉÁŰ-</row> + <row>ÍYXCVBNM,.?!@</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>§'"+!/=()~</row> + <row>^;\|Ä€Í÷×ä</row> + <row>đĐ[]íłŁ$ߤ</row> + <row>#@{}<>*?:_</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/icelandic.xml b/system/keyboardlayouts/icelandic.xml new file mode 100644 index 0000000..7b1887d --- /dev/null +++ b/system/keyboardlayouts/icelandic.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Icelandic" layout="QWERTY"> + <keyboard> + <row>1234567890ö-</row> + <row>qwertyuiopð'</row> + <row>asdfghjklæ+</row> + <row>zxcvbnm,.þ</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890Ö_</row> + <row>QWERTYUIOPÐ?</row> + <row>ASDFGHJKLÆ*</row> + <row>ZXCVBNM;:Þ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>áéíóú<>/?\|</row> + <row>ÁÉÍÓÚ`~"</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/italian.xml b/system/keyboardlayouts/italian.xml new file mode 100644 index 0000000..c92e225 --- /dev/null +++ b/system/keyboardlayouts/italian.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Italian" layout="QWERTY"> + <keyboard> + <row>1234567890'ì</row> + <row>qwertyuiopè+</row> + <row>asdfghjklòàù</row> + <row>zxcvbnm,.-</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890?^</row> + <row>QWERTYUIOPé*</row> + <row>ASDFGHJKLç°§</row> + <row>ZXCVBNM;:_</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>/\|@€#[]<>`~</row> + <row>!"£$%&()='?</row> + <row><>,.-+*_^§ç</row> + </keyboard> + </layout> + <layout language="Italian" layout="ABC"> + <keyboard> + <row>1234567890+-</row> + <row>abcdefghiàèì</row> + <row>jklmnopqròù'</row> + <row>stuvwxyz,.</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890*_</row> + <row>ABCDEFGHI°é^</row> + <row>JKLMNOPQRç§?</row> + <row>STUVWXYZ;:</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>/\|@€#[]<>`~</row> + <row>!"£$%&()='?</row> + <row><>,.-+*_^§ç</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/korean.xml b/system/keyboardlayouts/korean.xml new file mode 100644 index 0000000..31109e5 --- /dev/null +++ b/system/keyboardlayouts/korean.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Korean" layout="ㄱㄴㄷ" codingtable="Korean"> + <keyboard> + <row>0123456789</row> + <row>ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋ</row> + <row>ㅌㅍㅎㄲㄸㅃㅆㅉㅏㅑㅓ</row> + <row>ㅕㅗㅛㅜㅠㅡㅣㅐㅔㅒㅖ</row> + </keyboard> + <keyboard modifiers="shift"> + <row>0123456789</row> + <row>ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋ</row> + <row>ㅌㅍㅎㄲㄸㅃㅆㅉㅏㅑㅓ</row> + <row>ㅕㅗㅛㅜㅠㅡㅣㅐㅔㅒㅖ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/lithuanian.xml b/system/keyboardlayouts/lithuanian.xml new file mode 100644 index 0000000..9f0c839 --- /dev/null +++ b/system/keyboardlayouts/lithuanian.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Lithuanian" layout="AZERTY"> + <keyboard> + <row>1234567890x</row> + <row>ąžertyuiopįw</row> + <row>asdšghjklųėq</row> + <row>zūcvbnmčfę</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890X</row> + <row>ĄŽERTYUIOPĮW</row> + <row>ASDŠGHJKLŲĖQ</row> + <row>ZŪCVBNMČFĘ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> + <layout language="Lithuanian" layout="QWERTY"> + <keyboard> + <row>1234567890</row> + <row>qwertyuiopąč</row> + <row>asdfghjklęėį</row> + <row>zxcvbnmšųūž</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890</row> + <row>QWERTYUIOPĄČ</row> + <row>ASDFGHJKLĘĖĮ</row> + <row>ZXCVBNMŠŲŪŽ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/norwegian.xml b/system/keyboardlayouts/norwegian.xml new file mode 100644 index 0000000..8db7f78 --- /dev/null +++ b/system/keyboardlayouts/norwegian.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Norwegian" layout="QWERTY"> + <keyboard> + <row>1234567890</row> + <row>qwertyuiopå</row> + <row>asdfghjkløæ</row> + <row>zxcvbnm</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890</row> + <row>QWERTYUIOPÅ</row> + <row>ASDFGHJKLØÆ</row> + <row>ZXCVBNM</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/persian.xml b/system/keyboardlayouts/persian.xml new file mode 100644 index 0000000..e92f587 --- /dev/null +++ b/system/keyboardlayouts/persian.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Persian" layout="QWERTY"> + <keyboard> + <row>۱۲۳۴۵۶۷۸۹۰</row> + <row>جحخهعغفقثصض</row> + <row>گکمنتالبیسش</row> + <row>وپدذرزطظژچ.</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890</row> + <row>\|{}ّ[]</row> + <row>؛:«»ةآأإيئؤ</row> + <row>/<>؟ٰك</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~؟</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/polish.xml b/system/keyboardlayouts/polish.xml new file mode 100644 index 0000000..91e631e --- /dev/null +++ b/system/keyboardlayouts/polish.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Polish" layout="QWERTY"> + <keyboard> + <row>`1234567890-</row> + <row>qwertyuiopąć</row> + <row>asdfghjklęłń</row> + <row>zxcvbnmóśżź</row> + </keyboard> + <keyboard modifiers="shift"> + <row>~1234567890_</row> + <row>QWERTYUIOPĄĆ</row> + <row>ASDFGHJKLĘŁŃ</row> + <row>ZXCVBNMÓŚŻŹ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>!@#$%^&*()=+</row> + <row>\|€£§[]{};',</row> + <row>./:"<>?</row> + <row></row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/portuguese.xml b/system/keyboardlayouts/portuguese.xml new file mode 100644 index 0000000..88c9dce --- /dev/null +++ b/system/keyboardlayouts/portuguese.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Portuguese (Brazil)" layout="QWERTY"> + <keyboard> + <row>/\0123456789</row> + <row>qwertyuiopôê</row> + <row>asdfghjklç.:</row> + <row>zxcvbnmáéíóú</row> + </keyboard> + <keyboard modifiers="shift"> + <row>/\0123456789</row> + <row>QWERTYUIOPÔÊ</row> + <row>ASDFGHJKLÇ.:</row> + <row>ZXCVBNMÁÉÍÓÚ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~ÁÉÍÓÚÊÃ</row> + </keyboard> + </layout> + <layout language="Portuguese (Portugal)" layout="QWERTY"> + <keyboard> + <row>\1234567890'</row> + <row>qwertyuiop+´</row> + <row>asdfghjklçº~</row> + <row><zxcvbnm,.-</row> + </keyboard> + <keyboard modifiers="shift"> + <row>|1234567890?</row> + <row>QWERTYUIOP*`</row> + <row>ASDFGHJKLǪ^</row> + <row>>ZXCVBNM;:_</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>|!"#$%&/()=?</row> + <row>@£§{[]}€áãâà</row> + <row>éêíóõôúÁÃÂÀÉ</row> + <row>ÊÍÓÕÔÚ«»¨</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/romanian.xml b/system/keyboardlayouts/romanian.xml new file mode 100644 index 0000000..83defed --- /dev/null +++ b/system/keyboardlayouts/romanian.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Romanian" layout="QWERTY"> + <keyboard> + <row>1234567890</row> + <row>qwertyuiopăî</row> + <row>asdfghjklșțâ</row> + <row>zxcvbnm</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890</row> + <row>QWERTYUIOPĂÎ</row> + <row>ASDFGHJKLȘȚÂ</row> + <row>ZXCVBNM</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~„”</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/russian.xml b/system/keyboardlayouts/russian.xml new file mode 100644 index 0000000..d0c9102 --- /dev/null +++ b/system/keyboardlayouts/russian.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Russian" layout="ЙЦУКЕН"> + <keyboard> + <row>ё1234567890</row> + <row>йцукенгшщзхъ</row> + <row>фывапролджэ</row> + <row>ячсмитьбю</row> + </keyboard> + <keyboard modifiers="shift"> + <row>Ё1234567890</row> + <row>ЙЦУКЕНГШЩЗХЪ</row> + <row>ФЫВАПРОЛДЖЭ</row> + <row>ЯЧСМИТЬБЮ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> + <layout language="Russian" layout="АБВ"> + <keyboard> + <row>0123456789</row> + <row>абвгдеёжзий</row> + <row>клмнопрстуф</row> + <row>хцчшщъыьэюя</row> + </keyboard> + <keyboard modifiers="shift"> + <row>0123456789</row> + <row>АБВГДЕЁЖЗИЙ</row> + <row>КЛМНОПРСТУФ</row> + <row>ХЦЧШЩЪЫЬЭЮЯ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/silesian.xml b/system/keyboardlayouts/silesian.xml new file mode 100644 index 0000000..a35aab9 --- /dev/null +++ b/system/keyboardlayouts/silesian.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Silesian" layout="QWERTY"> + <keyboard> + <row>ôōŏśćńłżź(</row> + <row>qwertzuiopã)</row> + <row>asdfghjklõ_</row> + <row>/yxcvbnm:.-</row> + </keyboard> + <keyboard modifiers="shift"> + <row>ÔŌŎŚĆŃŁŻŹ(</row> + <row>QWERTZUIOPÃ)</row> + <row>ASDFGHJKLÕ_</row> + <row>\YXCVBNM:.-</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>1234567890%</row> + <row>+@#$~^&*{}=</row> + <row>[]()/"'`;!</row> + <row>\|<>,.?:-_</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/slovak.xml b/system/keyboardlayouts/slovak.xml new file mode 100644 index 0000000..5737079 --- /dev/null +++ b/system/keyboardlayouts/slovak.xml @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Slovak" layout="QWERTZ"> + <keyboard> + <row>ĺľščťžýáíéó_</row> + <row>qwertzuiopúä</row> + <row>asdfghjklôďň</row> + <row>/yxcvbnmŕ:.-</row> + </keyboard> + <keyboard modifiers="shift"> + <row>ĹĽŠČŤŽÝÁÍÉÓ_</row> + <row>QWERTZUIOPÚÄ</row> + <row>ASDFGHJKLÔĎŇ</row> + <row>\YXCVBNMŔ:.-</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>1234567890%</row> + <row>+@#$~^&*{}=</row> + <row>[]()/"'`;!</row> + <row>\|<>,.?:-_</row> + </keyboard> + </layout> + <layout language="Slovak" layout="QWERTY"> + <keyboard> + <row>ĺľščťžýáíéó_</row> + <row>qwertyuiopúä</row> + <row>asdfghjklôďň</row> + <row>/zxcvbnmŕ:.-</row> + </keyboard> + <keyboard modifiers="shift"> + <row>ĹĽŠČŤŽÝÁÍÉÓ_</row> + <row>QWERTYUIOPÚÄ</row> + <row>ASDFGHJKLÔĎŇ</row> + <row>\ZXCVBNMŔ:.-</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>1234567890%</row> + <row>+@#$~^&*{}=</row> + <row>[]()/"'`;!</row> + <row>\|<>,.?:-_</row> + </keyboard> + </layout> + <layout language="Slovak" layout="ABC"> + <keyboard> + <row>aáäbcčdďeéfg</row> + <row>hiíjklĺľmnňo</row> + <row>óôpqrŕsštťuú</row> + <row>vwxyýzž:./\@</row> + </keyboard> + <keyboard modifiers="shift"> + <row>AÁÄBCČDĎEÉFG</row> + <row>HIÍJKLĹĽMNŇO</row> + <row>ÓÔPQRŔSŠTŤUÚ</row> + <row>VWXYÝZŽ:./\@</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>1234567890%</row> + <row>+@#$~^&*{}=</row> + <row>[]()/"'`;!</row> + <row>\|<>,.?:-_</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/slovenian.xml b/system/keyboardlayouts/slovenian.xml new file mode 100644 index 0000000..a09b007 --- /dev/null +++ b/system/keyboardlayouts/slovenian.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Slovenian" layout="QWERTZ"> + <keyboard> + <row>1234567890'+</row> + <row>qwertzuiopšđ</row> + <row>asdfghjklčćž:</row> + <row>yxcvbnm,.-</row> + </keyboard> + <keyboard modifiers="shift"> + <row>!"#$%&/()=?*</row> + <row>QWERTZUIOPŠĐ</row> + <row>ASDFGHJKLČĆŽ</row> + <row>YXCVBNM;:_</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/spanish.xml b/system/keyboardlayouts/spanish.xml new file mode 100644 index 0000000..866e9b0 --- /dev/null +++ b/system/keyboardlayouts/spanish.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Spanish" layout="QWERTY"> + <keyboard> + <row>1234567890'¡</row> + <row>qwertyuiop`+</row> + <row>asdfghjklñ´ç</row> + <row><zxcvbnm,.-</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890?¿</row> + <row>QWERTYUIOP^*</row> + <row>ASDFGHJKLѨÇ</row> + <row>>ZXCVBNM;:_</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>!"·$%&/()=?¿</row> + <row>\|@#€£¥[]{}~</row> + <row>áéíóúü¹²³ªº±</row> + <row>ÁÉÍÓÚܼ½¾«»§</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/swedish.xml b/system/keyboardlayouts/swedish.xml new file mode 100644 index 0000000..62f920c --- /dev/null +++ b/system/keyboardlayouts/swedish.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Swedish" layout="QWERTY"> + <keyboard> + <row>1234567890</row> + <row>qwertyuiopå</row> + <row>asdfghjklöä</row> + <row>zxcvbnm</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890</row> + <row>QWERTYUIOPÅ</row> + <row>ASDFGHJKLÖÄ</row> + <row>ZXCVBNM</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/thai.xml b/system/keyboardlayouts/thai.xml new file mode 100644 index 0000000..0a810c4 --- /dev/null +++ b/system/keyboardlayouts/thai.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Thai" layout="Kedmanee"> + <keyboard> + <row>ๅ/-ภถุึคตจขช</row> + <row>ๆไำพะัีรนยบลฃ</row> + <row>ฟหกดเ้่าสวง</row> + <row>ผปแอิืทมใฝ</row> + </keyboard> + <keyboard modifiers="shift"> + <row>+๑๒๓๔ู฿๕๖๗๘๙</row> + <row>๐"ฎฑธํ๊ณฯญฐ,ฅ</row> + <row>ฤฆฏโฌ็๋ษศซ.</row> + <row>()ฉฮฺ์?ฒฬฦ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#€§$%^&*(</row> + <row>[]{}-_=+;:μ</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/turkish.xml b/system/keyboardlayouts/turkish.xml new file mode 100644 index 0000000..3a123db --- /dev/null +++ b/system/keyboardlayouts/turkish.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Turkish" layout="QWERTY"> + <keyboard> + <row>1234567890</row> + <row>qwertyuıopğü</row> + <row>asdfghjklşi</row> + <row>zxcvbnmöç</row> + </keyboard> + <keyboard modifiers="shift"> + <row>1234567890</row> + <row>QWERTYUIOPĞÜ</row> + <row>ASDFGHJKLŞİ</row> + <row>ZXCVBNMÖÇ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keyboardlayouts/ukrainian.xml b/system/keyboardlayouts/ukrainian.xml new file mode 100644 index 0000000..3303a1b --- /dev/null +++ b/system/keyboardlayouts/ukrainian.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<!-- +Please use English language names instead. +Default font lacks support for all characters +--> +<keyboardlayouts> + <layout language="Ukrainian" layout="ЙЦУКЕН"> + <keyboard> + <row>'1234567890</row> + <row>йцукенгшщзхї</row> + <row>фівапролджє</row> + <row>ґячсмитьбю</row> + </keyboard> + <keyboard modifiers="shift"> + <row>'1234567890</row> + <row>ЙЦУКЕНГШЩЗХЇ</row> + <row>ФІВАПРОЛДЖЄ</row> + <row>ҐЯЧСМИТЬБЮ</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> + <layout language="Ukrainian" layout="АБВ"> + <keyboard> + <row>0123456789</row> + <row>абвгґдеєжзиі</row> + <row>їйклмнопрст</row> + <row>уфхцчшщьюя'</row> + </keyboard> + <keyboard modifiers="shift"> + <row>0123456789</row> + <row>АБВГҐДЕЄЖЗИІ</row> + <row>ЇЙКЛМНОПРСТ</row> + <row>УФХЦЧШЩЬЮЯ'</row> + </keyboard> + <keyboard modifiers="symbol,shift+symbol"> + <row>)!@#$%^&*(</row> + <row>[]{}-_=+;:</row> + <row>'",.<>/?\|</row> + <row>`~</row> + </keyboard> + </layout> +</keyboardlayouts> diff --git a/system/keymaps/appcommand.xml b/system/keymaps/appcommand.xml new file mode 100644 index 0000000..d8ac1d2 --- /dev/null +++ b/system/keymaps/appcommand.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<keymap> + <global> + <appcommand> + <browser_back>Back</browser_back> + <browser_forward/> + <browser_refresh/> + <browser_stop>Stop</browser_stop> + <browser_search/> + <browser_favorites>ActivateWindow(FavouritesBrowser)</browser_favorites> + <browser_home>FirstPage</browser_home> + <volume_mute/> + <volume_down/> + <volume_up/> + <next_track>SkipNext</next_track> + <prev_track>SkipPrevious</prev_track> + <stop>Stop</stop> + <play_pause>PlayPause</play_pause> + <launch_mail/> + <launch_media_select>ActivateWindow(Music)</launch_media_select> + <launch_app1>ActivateWindow(Programs)</launch_app1> + <launch_app2>ActivateWindow(Programs)</launch_app2> + <play>Play</play> + <pause>Pause</pause> + <fastforward>FastForward</fastforward> + <rewind>Rewind</rewind> + <channelup>PageUp</channelup> + <channeldown>PageDown</channeldown> + </appcommand> + </global> +</keymap> diff --git a/system/keymaps/customcontroller.AppleRemote.xml b/system/keymaps/customcontroller.AppleRemote.xml new file mode 100644 index 0000000..a06cf59 --- /dev/null +++ b/system/keymaps/customcontroller.AppleRemote.xml @@ -0,0 +1,202 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This file contains the mapping of keys to actions within Kodi. --> +<!-- --> +<!-- The format is: --> +<!-- <window> --> +<!-- <device> --> +<!-- <button>action</button> --> +<!-- </device> --> +<!-- </window> --> +<!-- --> +<!-- The <global> section is a fall through - they will only be used if the button is --> +<!-- not used in the current window's section. --> +<!-- --> +<!-- Actions can be built-in functions. --> +<!-- eg <button id="6">ActivateWindow(Music)</button> --> +<!-- would automatically go to Music on the press of the "Menu" button. --> +<!-- --> +<!-- --> +<!-- An empty action removes the corresponding mapping from default and parent keymaps. --> +<!-- This is different from a "noop" action, which disables a button. --> +<!-- --> +<!-- More documentation on keymaps can be found on http://kodi.wiki/view/keymaps --> +<!-- --> +<!-- To map keys from other remotes using the RCA protocol, you may add --> +<!-- <customcontroller name="AppleRemote"> blocks. --> +<!-- In this case, the tags used are <button id=""#> where # is the original button code --> +<!-- (OBC) of the key. --> +<!-- You set it up by adding a <customcontroller name="AppleRemote"> block to the window --> +<!-- or <global> section: --> +<!-- <customcontroller name="AppleRemote"> --> +<!-- <button id="45">Stop</button> --> +<!-- </customcontroller> --> +<!-- --> +<!-- Button Ids: --> +<!-- 'id' is the button ID used by SDL. The key ids recognized from your remote appears --> +<!-- in the log file for each button pressed and when debug mode is enabled. --> +<!-- Use your log to discover and map custom buttons to actions. --> +<keymap> + <global> + <customcontroller name="AppleRemote"> + <!-- plus --> <button id="1">Up</button> + <!-- minus --> <button id="2">Down</button> + <!-- left --> <button id="3">Left</button> + <!-- right --> <button id="4">Right</button> + <!-- center --> <button id="5">Select</button> + <!-- menu --> <button id="6">Back</button> + <!-- hold center--> <button id="7">Fullscreen</button> + <!-- hold menu --> <button id="8">ContextMenu</button> + + <!-- old buttons for ATV1 <2.2, used on OSX --> + <!-- hold left --> <button id="9">Left</button> + <!-- hold right --> <button id="10">Right</button> + + <!-- new aluminium remote buttons --> + <!-- play/pause --> <button id="12">PlayPause</button> + + <!-- Additional buttons via Harmony Apple TV remote profile - these are also the learned buttons on Apple TV 2gen--> + <!-- pageup --> <button id="13">PageUp</button> + <!-- pagedown --> <button id="14">PageDown</button> + <!-- pause --> <button id="15">Pause</button> + <!-- play2 --> <button id="16">Play</button> + <!-- stop --> <button id="17">Stop</button> + <!-- fast fwd --> <button id="18">FastForward</button> + <!-- rewind --> <button id="19">Rewind</button> + <!-- skip fwd --> <button id="20">SkipNext</button> + <!-- skip back --> <button id="21">SkipPrevious</button> + + <!-- Learned remote buttons (ATV1 >2.3) --> + <!-- Play --> <button id="70">Play</button> + <!-- Pause --> <button id="71">Pause</button> + <!-- Stop --> <button id="72">Stop</button> + <!-- Previous --> <button id="73">SkipPrevious</button> + <!-- Next --> <button id="74">SkipNext</button> + <!-- Rewind --> <button id="75">Rewind</button> + <!-- Forward --> <button id="76">FastForward</button> + <!-- Return --> <button id="77">OSD</button> + <!-- Enter --> <button id="78">ShowVideoMenu</button> + + <!-- few gestures from Apple's iPhone Remote (ATV1 > 2.3 ?) --> + <!-- SwipeLeft --> <button id="80">Left</button> + <!-- SwipeRight --> <button id="81">Right</button> + <!-- SwipeUp --> <button id="82">Up</button> + <!-- SwipeDown --> <button id="83">Down</button> + + <!-- FlickLeft --> <button id="85">Left</button> + <!-- FlickRight --> <button id="86">Right</button> + <!-- FlickUp --> <button id="87">Up</button> + <!-- FlickDown --> <button id="88">Down</button> + + </customcontroller> + </global> + <Home> + <customcontroller name="AppleRemote"> + <button id="6">ActivateWindow(FavouritesBrowser)</button> + <button id="8">ActivateWindow(shutdownmenu)</button> + </customcontroller> + </Home> + <FullscreenVideo> + <customcontroller name="AppleRemote"> + <button id="1">VolumeUp</button> + <button id="2">VolumeDown</button> + <button id="3">StepBack</button> + <button id="4">StepForward</button> + <button id="5">Pause</button> + <button id="6">Stop</button> + <button id="7">OSD</button> + <button id="8">Fullscreen</button> + <button id="9">Rewind</button> + <button id="10">FastForward</button> + <!-- pageup --> <button id="13">ChapterOrBigStepForward</button> + <!-- pagedown --> <button id="14">ChapterOrBigStepBack</button> + <!-- SwipeLeft --> <button id="80">StepBack</button> + <!-- SwipeRight --> <button id="81">StepForward</button> + <!-- SwipeUp --> <button id="82">BigStepForward</button> + <!-- SwipeDown --> <button id="83">BigStepBack</button> + <!-- FlickLeft --> <button id="85">Rewind</button> + <!-- FlickRight --> <button id="86">FastForward</button> + <!-- FlickUp --> <button id="87">BigStepForward</button> + <!-- FlickDown --> <button id="88">BigStepBack</button> + </customcontroller> + </FullscreenVideo> + <FullscreenLiveTV> + <customcontroller name="AppleRemote"> + <button id="3">ChannelDown</button> + <button id="4">ChannelUp</button> + <!-- pageup --> <button id="13">ChannelUp</button> + <!-- pagedown --> <button id="14">ChannelDown</button> + </customcontroller> + </FullscreenLiveTV> + <FullscreenRadio> + <customcontroller name="AppleRemote"> + <button id="3">ChannelDown</button> + <button id="4">ChannelUp</button> + <!-- pageup --> <button id="13">ChannelUp</button> + <!-- pagedown --> <button id="14">ChannelDown</button> + </customcontroller> + </FullscreenRadio> + <Visualisation> + <customcontroller name="AppleRemote"> + <button id="1">VolumeUp</button> + <button id="2">VolumeDown</button> + <button id="3">SkipPrevious</button> + <button id="4">SkipNext</button> + <button id="5">Pause</button> + <button id="6">Fullscreen</button> + <button id="7">OSD</button> + <button id="8">Stop</button> + <!-- SwipeLeft --> <button id="80">SkipPrevious</button> + <!-- SwipeRight --> <button id="81">SkipNext</button> + <!-- FlickLeft --> <button id="85">SkipPrevious</button> + <!-- FlickRight --> <button id="86">SkipNext</button> + </customcontroller> + </Visualisation> + <SlideShow> + <customcontroller name="AppleRemote"> + <button id="1">ZoomIn</button> + <button id="2">ZoomOut</button> + <button id="3">PreviousPicture</button> + <button id="4">NextPicture</button> + <button id="6">Stop</button> + <button id="7">Info</button> + <button id="8">Rotate</button> + <!-- SwipeLeft --> <button id="80">PreviousPicture</button> + <!-- SwipeRight --> <button id="81">NextPicture</button> + <!-- FlickLeft --> <button id="85">PreviousPicture</button> + <!-- FlickRight --> <button id="86">NextPicture</button> + </customcontroller> + </SlideShow> + <ScreenCalibration> + <customcontroller name="AppleRemote"> + <button id="5">NextCalibration</button> + </customcontroller> + </ScreenCalibration> + <VideoOSD> + <customcontroller name="AppleRemote"> + <button id="7">Back</button> + </customcontroller> + </VideoOSD> + <VideoMenu> + <customcontroller name="AppleRemote"> + <button id="5">Select</button> + <button id="6">Stop</button> + <button id="7">OSD</button> + <button id="8"/> + </customcontroller> + </VideoMenu> + <Videos> + <customcontroller name="AppleRemote"> + <button id="7">Info</button> + </customcontroller> + </Videos> + <PictureInfo> + <customcontroller name="AppleRemote"> + <button id="3">Left</button> + <button id="4">Right</button> + <!-- SwipeLeft --> <button id="80">Left</button> + <!-- SwipeRight --> <button id="81">Right</button> + <!-- FlickLeft --> <button id="85">Left</button> + <!-- FlickRight --> <button id="86">Right</button> + </customcontroller> + </PictureInfo> +</keymap> diff --git a/system/keymaps/customcontroller.Harmony.xml b/system/keymaps/customcontroller.Harmony.xml new file mode 100644 index 0000000..77f288d --- /dev/null +++ b/system/keymaps/customcontroller.Harmony.xml @@ -0,0 +1,343 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This file contains the mapping of keys to actions within Kodi. --> +<!-- --> +<!-- The format is: --> +<!-- <window> --> +<!-- <device> --> +<!-- <button>action</button> --> +<!-- </device> --> +<!-- </window> --> +<!-- --> +<!-- The <global> section is a fall through - they will only be used if the button is --> +<!-- not used in the current window's section. --> +<!-- --> +<!-- Actions can be built-in functions. --> +<!-- eg <button id="6">ActivateWindow(Music)</button> --> +<!-- would automatically go to Music on the press of the "Menu" button. --> +<!-- --> +<!-- --> +<!-- An empty action removes the corresponding mapping from default and parent keymaps. --> +<!-- This is different from a "noop" action, which disables a button. --> +<!-- --> +<!-- More documentation on keymaps can be found on http://kodi.wiki/view/keymaps --> +<!-- --> +<!-- To map keys from other remotes using the RCA protocol, you may add --> +<!-- <customcontroller name="Harmony"> blocks. --> +<!-- In this case, the tags used are <button id=""#> where # is the original button code --> +<!-- (OBC) of the key. --> +<!-- You set it up by adding a <customcontroller name="Harmony"> block to the window --> +<!-- or <global> section: --> +<!-- <customcontroller name="Harmony"> --> +<!-- <button id="45">Stop</button> --> +<!-- </customcontroller> --> +<!-- --> +<!-- Button Ids: --> +<!-- 'id' is the button ID used by SDL. The key ids recognized from your remote appears --> +<!-- in the log file for each button pressed and when debug mode is enabled. --> +<!-- Use your log to discover and map custom buttons to actions. --> +<keymap> + <global> + <customcontroller name="Harmony"> + <!-- up --> <button id="101">Up</button> + <!-- down --> <button id="102">Down</button> + <!-- left --> <button id="103">Left</button> + <!-- right --> <button id="104">Right</button> + <!-- OK --> <button id="105">Select</button> + <!-- menu --> <button id="106">ContextMenu</button> + <!-- hold play --> <button id="107">FullScreen</button> + <!-- hold menu --> <button id="108">ContextMenu</button> + <!-- hold right --> <button id="109">Right</button> + <!-- hold left --> <button id="110">Left</button> + <!-- Stop --> <button id="115">Stop</button> + <!-- Stop Hold --> <key id="117"/> + <!-- Play --> <button id="116">Play</button> + <!-- Play Hold --> <key id="118"/> + <!-- Replay --> <button id="191">SkipPrevious</button> + <!-- Skip --> <button id="192">SkipNext</button> + <!-- Record --> <button id="152">Screenshot</button> + <!-- Rew --> <button id="141">Rewind</button> + <!-- Fwd --> <button id="142">FastForward</button> + <!-- Pause --> <button id="126">Pause</button> + <!-- Prev --> <button id="132">ParentDir</button> + <!-- Guide --> <button id="165">FullScreen</button> + <!-- Info --> <button id="131">Info</button> + <!-- Exit --> <button id="151">PreviousMenu</button> + <!-- Channel Up --> <button id="171">PageUp</button> + <!-- Channel Down --> <button id="172">PageDown</button> + <!-- looks like buttons below are duplicates of those above + Arrow Up <button id="171"></button> + Arrow Down <button id="172"></button> + --> + <!-- Volume + --> <button id="121">VolumeUp</button> + <!-- Volume - --> <button id="122">VolumeDown</button> + <!-- 1 --> <button id="111">Number1</button> + <!-- 2 --> <button id="112">Number2</button> + <!-- 3 --> <button id="113">Number3</button> + <!-- 4 --> <button id="114">Number4</button> + <!-- 5 --> <button id="123">Number5</button> + <!-- 6 --> <button id="124">Number6</button> + <!-- 7 --> <button id="133">Number7</button> + <!-- 8 --> <button id="134">Number8</button> + <!-- 9 --> <button id="143">Number9</button> + <!-- 0 --> <button id="144">Number0</button> + <!-- * clear --> <button id="145">Back</button> + <!-- # enter --> <button id="136">Select</button> + <!-- Mute --> <button id="125">Mute</button> + <!-- Aspect --> <button id="161">AspectRatio</button> + <!-- F1 --> <button id="153">ActivateWindow(Music)</button> + <!-- F3 --> <button id="155">ActivateWindow(Videos,tvshowtitles,return)</button> + <!-- F2 --> <button id="154">ActivateWindow(Videos,movietitles,return)</button> + <!-- F4 --> <button id="156">ActivateWindow(Weather)</button> + <!-- F5 --> <button id="193">OSD</button> + <!-- F7 --> <button id="195">ActivateWindow(Home)</button> + <!-- F6 --> <button id="194">ActivateWindow(Programs)</button> + <!-- F8 --> <button id="196">ActivateWindow(FavouritesBrowser)</button> + <!-- F9 --> <button id="173">ShowVideoMenu</button> + <!-- F10 --> <button id="174">ShowSubtitles</button> + <!-- F11 --> <button id="175">NextSubtitle</button> + <!-- F12 --> <button id="176">ActivateWindow(Videos)</button> + <!-- F13 --> <button id="163">Playlist</button> + <!-- F14 --> <button id="164">AudioNextLanguage</button> + <!-- Large Down --> <button id="182">PageDown</button> + <!-- Large Up --> <button id="181">PageUp</button> + <!-- pwrToggle --> <button id="166">ShutDown()</button> + <!-- Queue --> <button id="162">Queue</button> + <!-- Sleep --> <button id="146">Suspend()</button> + <!-- Red --> <button id="183">PlayerProcessInfo</button> + <!-- Green --> <button id="184">ActivateWindow(Settings)</button> + <!-- Yellow --> <button id="185">ActivateWindow(SystemSettings)</button> + <!-- Blue --> <button id="186">ActivateWindow(SystemInfo)</button> + </customcontroller> + </global> + <Home> + <customcontroller name="Harmony"> + <!-- menu --> <button id="106">ActivateWindow(PlayerControls)</button> + <!-- Info --> <button id="131">ActivateWindow(Settings)</button> + <!-- Exit --> <button id="151">ActivateWindow(ShutdownMenu)</button> + <!-- #enter --> <button id="136">ActivateWindow(SystemInfo)</button> + <!-- 1 --> <button id="111">ToggleFullScreen</button> + </customcontroller> + </Home> + <FileManager> + <customcontroller name="Harmony"> + <!-- 1 --> <button id="111">Highlight</button> + <!-- 4 --> <button id="114">Copy</button> + <!-- 7 --> <button id="133">Move</button> + <!-- * clear --> <button id="145">Delete</button> + </customcontroller> + </FileManager> + <MusicPlaylist> + <customcontroller name="Harmony"> + <!-- * clear --> <button id="145">Delete</button> + <!-- Channel Up --> <button id="171">MoveItemUp</button> + <!-- Channel Down --> <button id="172">MoveItemDown</button> + </customcontroller> + </MusicPlaylist> + <Music> + <customcontroller name="Harmony"> + <!-- 1 --> <button id="111">number1</button> + <!-- 2 --> <button id="112">JumpSMS2</button> + <!-- 3 --> <button id="113">JumpSMS3</button> + <!-- 4 --> <button id="114">JumpSMS4</button> + <!-- 5 --> <button id="123">JumpSMS5</button> + <!-- 6 --> <button id="124">JumpSMS6</button> + <!-- 7 --> <button id="133">JumpSMS7</button> + <!-- 8 --> <button id="134">JumpSMS8</button> + <!-- 9 --> <button id="143">JumpSMS9</button> + </customcontroller> + </Music> + <FullscreenVideo> + <customcontroller name="Harmony"> + <!-- up --> <button id="101">ChapterOrBigStepForward</button> + <!-- down --> <button id="102">ChapterOrBigStepBack</button> + <!-- left --> <button id="103">StepBack</button> + <!-- right --> <button id="104">StepForward</button> + <!-- menu --> <button id="106">OSD</button> + <!-- Prev --> <button id="132">SmallStepBack</button> + </customcontroller> + </FullscreenVideo> + <FullscreenLiveTV> + <customcontroller name="Harmony"> + <!-- up --> <button id="101">ChannelUp</button> + <!-- down --> <button id="102">ChannelDown</button> + <!-- left --> <button id="103">PreviousChannelGroup</button> + <!-- right --> <button id="104">NextChannelGroup</button> + </customcontroller> + </FullscreenLiveTV> + <FullscreenRadio> + <customcontroller name="Harmony"> + <!-- up --> <button id="101">ChannelUp</button> + <!-- down --> <button id="102">ChannelDown</button> + <!-- left --> <button id="103">PreviousChannelGroup</button> + <!-- right --> <button id="104">NextChannelGroup</button> + </customcontroller> + </FullscreenRadio> + <FullscreenInfo> + <customcontroller name="Harmony"> + <!-- Info --> <button id="131">Back</button> + </customcontroller> + </FullscreenInfo> + <PlayerControls> + <customcontroller name="Harmony"> + <!-- menu --> <button id="106">Back</button> + </customcontroller> + </PlayerControls> + <Visualisation> + <customcontroller name="Harmony"> + <!-- up --> <button id="101">IncreaseRating</button> + <!-- minus --> <button id="102">DecreaseRating</button> + <!-- left --> <button id="103">PreviousPreset</button> + <!-- right --> <button id="104">NextPreset</button> + <!-- menu --> <button id="106">OSD</button> + <!-- Prev --> <button id="132">LockPreset</button> + <!-- F8 --> <button id="196">ActivateWindow(VisualisationPresetList)</button> + <!-- F9 --> <button id="173">ActivateWindow(AddonSettings)</button> + </customcontroller> + </Visualisation> + <MusicOSD> + <customcontroller name="Harmony"> + <!-- menu --> <button id="106">Back</button> + <!-- Info --> <button id="131">PlayerProcessInfo</button> + </customcontroller> + </MusicOSD> + <AddonSettings> + <customcontroller name="Harmony"> + <!-- menu --> <button id="106">Back</button> + </customcontroller> + </AddonSettings> + <VisualisationPresetList> + <customcontroller name="Harmony"> + <!-- menu --> <button id="106">Back</button> + </customcontroller> + </VisualisationPresetList> + <SlideShow> + <customcontroller name="Harmony"> + <!-- 1 --> <button id="111">ZoomLevel1</button> + <!-- 2 --> <button id="112">ZoomLevel2</button> + <!-- 3 --> <button id="113">ZoomLevel3</button> + <!-- 4 --> <button id="114">ZoomLevel4</button> + <!-- 5 --> <button id="123">ZoomLevel5</button> + <!-- 6 --> <button id="124">ZoomLevel6</button> + <!-- 7 --> <button id="133">ZoomLevel7</button> + <!-- 8 --> <button id="134">ZoomLevel8</button> + <!-- 9 --> <button id="143">ZoomLevel9</button> + <!-- 0 --> <button id="144">ZoomNormal</button> + <!-- Skip --> <button id="192">NextPicture</button> + <!-- Replay --> <button id="191">PreviousPicture</button> + <!-- OK --> <button id="105">Rotate</button> + </customcontroller> + </SlideShow> + <ScreenCalibration> + <customcontroller name="Harmony"> + <!-- OK --> <button id="105">NextCalibration</button> + <!-- 0 --> <button id="144">ResetCalibration</button> + <!-- # enter --> <button id="136">NextCalibration</button> + <!-- Guide --> <button id="165">NextResolution</button> + </customcontroller> + </ScreenCalibration> + <VideoOSD> + <customcontroller name="Harmony"> + <!-- menu --> <button id="106">Back</button> + </customcontroller> + </VideoOSD> + <VideoMenu> + <customcontroller name="Harmony"> + <!-- menu --> <button id="106">OSD</button> + <!-- Info --> <button id="131">Info</button> + </customcontroller> + </VideoMenu> + <OSDVideoSettings> + <customcontroller name="Harmony"> + <!-- menu --> <button id="106">Back</button> + </customcontroller> + </OSDVideoSettings> + <OSDAudioSettings> + <customcontroller name="Harmony"> + <!-- menu --> <button id="106">Back</button> + </customcontroller> + </OSDAudioSettings> + <VideoBookmarks> + <customcontroller name="Harmony"> + <!-- menu --> <button id="106">Back</button> + <!-- * clear --> <button id="145">Delete</button> + </customcontroller> + </VideoBookmarks> + <Videos> + <customcontroller name="Harmony"> + <!-- * clear --> <button id="145">Delete</button> + <!-- # enter --> <button id="136">ToggleWatched</button> + <!-- 1 --> <button id="111">number1</button> + <!-- 2 --> <button id="112">JumpSMS2</button> + <!-- 3 --> <button id="113">JumpSMS3</button> + <!-- 4 --> <button id="114">JumpSMS4</button> + <!-- 5 --> <button id="123">JumpSMS5</button> + <!-- 6 --> <button id="124">JumpSMS6</button> + <!-- 7 --> <button id="133">JumpSMS7</button> + <!-- 8 --> <button id="134">JumpSMS8</button> + <!-- 9 --> <button id="143">JumpSMS9</button> + </customcontroller> + </Videos> + <VideoPlaylist> + <customcontroller name="Harmony"> + <!-- * clear --> <button id="145">Delete</button> + <!-- Channel Up --> <button id="171">MoveItemUp</button> + <!-- Channel Down --> <button id="172">MoveItemDown</button> + </customcontroller> + </VideoPlaylist> + <VirtualKeyboard> + <customcontroller name="Harmony"> + <!-- Prev --> <button id="132">BackSpace</button> + <!-- * clear --> <button id="145">Shift</button> + <!-- # enter --> <button id="136">Symbols</button> + <!-- Rew --> <button id="141">CursorLeft</button> + <!-- Fwd --> <button id="142">CursorRight</button> + </customcontroller> + </VirtualKeyboard> + <Programs> + <customcontroller name="Harmony"> + <!-- Info --> <button id="131">info</button> + </customcontroller> + </Programs> + <NumericInput> + <customcontroller name="Harmony"> + <!-- 1 --> <button id="111">Number1</button> + <!-- 2 --> <button id="112">Number2</button> + <!-- 3 --> <button id="113">Number3</button> + <!-- 4 --> <button id="114">Number4</button> + <!-- 5 --> <button id="123">Number5</button> + <!-- 6 --> <button id="124">Number6</button> + <!-- 7 --> <button id="133">Number7</button> + <!-- 8 --> <button id="134">Number8</button> + <!-- 9 --> <button id="143">Number9</button> + <!-- 0 --> <button id="144">Number0</button> + <!-- Prev --> <button id="132">BackSpace</button> + </customcontroller> + </NumericInput> + <MusicInformation> + <customcontroller name="Harmony"> + <!-- menu --> <button id="106">Back</button> + </customcontroller> + </MusicInformation> + <MovieInformation> + <customcontroller name="Harmony"> + <!-- menu --> <button id="106">Back</button> + </customcontroller> + </MovieInformation> + <LockSettings> + <customcontroller name="Harmony"> + <!-- menu --> <button id="106">Back</button> + </customcontroller> + </LockSettings> + <ProfileSettings> + <customcontroller name="Harmony"> + <!-- menu --> <button id="106">Back</button> + </customcontroller> + </ProfileSettings> + <PictureInfo> + <customcontroller name="Harmony"> + <!-- Replay --> <button id="191">PreviousPicture</button> + <!-- Skip --> <button id="192">NextPicture</button> + <!-- Info --> <button id="131">Back</button> + </customcontroller> + </PictureInfo> +</keymap> diff --git a/system/keymaps/customcontroller.SiriRemote.xml b/system/keymaps/customcontroller.SiriRemote.xml new file mode 100644 index 0000000..1267c8d --- /dev/null +++ b/system/keymaps/customcontroller.SiriRemote.xml @@ -0,0 +1,147 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This file contains the mapping of keys (gamepad,remote and keyboard) to actions within XBMC --> +<!-- The <global> section is a fall through - they will only be used if the button is not --> +<!-- used in the current window's section. Note that there is only handling --> +<!-- for a single action per button at this stage. --> +<!-- For joystick/gamepad configuration under linux/win32, see below as it differs from xbox --> +<!-- gamepads. --> + +<!-- The format is: --> +<!-- <device> --> +<!-- <button id=""#>xbmc action</button> --> +<!-- </device> --> + +<!-- To map keys from other remotes using the RCA protocol, you may add <customcontroller name="SiriRemote"> blocks --> +<!-- In this case, the tags used are <button id=""#> where # is the original button code (OBC) of the key --> +<!-- You set it up by adding a <customcontroller name="SiriRemote"> block to the window or <global> section: --> +<!-- <customcontroller name="SiriRemote"> --> +<!-- <button id="45">Stop</button> --> +<!-- </customcontroller> --> + +<!-- Note that the action can be a built-in function. --> +<!-- eg <button id="6">ActivateWindow(FavouritesBrowser)</button> --> +<!-- would bring up Favourites when the button with the id of 6 is press. In this case, "Menu" --> + +<!-- --> +<!-- Button Ids: --> +<!-- 'id' is the button ID used by SDL. The key ids recognized from your remote appears --> +<!-- in /var/log/syslog on the ATV2 for each button pressed and when debug mode is enabled --> +<!-- Use your log to discover and map custom buttons to actions. --> + +<keymap> + <global> + <customcontroller name="SiriRemote"> + <!-- Siri/IR remotes up --> <button id="1">Up</button> + <!-- Siri/IR remotes down --> <button id="2">Down</button> + <!-- Siri/IR remotes left --> <button id="3">Left</button> + <!-- Siri/IR remotes right --> <button id="4">Right</button> + <!-- Siri remote select --> <button id="5">Select</button> + <!-- Siri remote menu --> <button id="6">Back</button> + <!-- Siri remote hold select --> <button id="7">ContextMenu</button> + <!-- Siri remote swipe up --> <button id="8">Up</button> + <!-- Siri remote swipe down --> <button id="9">Down</button> + <!-- Siri remote swipe left --> <button id="10">Left</button> + <!-- Siri remote swipe right --> <button id="11">Right</button> + <!-- Siri remote play/pause --> <button id="12">PlayPause</button> + <!-- IR remote/iDevice Now Playing play --> <button id="13">Play</button> + <!-- IR remote/iDevice Now Playing pause --> <button id="14">Pause</button> + <!-- IR remote stop --> <button id="15">Stop</button> + <!-- IR remote/iDevice Now Playing next track --> <button id="16">SkipNext</button> + <!-- IR remote/iDevice Now Playing prev track --> <button id="17">SkipPrevious</button> + <!-- IR remote seek forward --> <button id="18">FastForward</button> + <!-- IR remote seek backward --> <button id="19">Rewind</button> + <!-- Siri remote hold play/pause --> <button id="20">Stop</button> + <!-- Siri remote double play/pause --> <button id="21">noop</button> + <!-- Siri remote double select --> <button id="22">noop</button> + <!-- Siri remote pan up --> <button id="23">Up</button> + <!-- Siri remote pan down --> <button id="24">Down</button> + <!-- Siri remote pan left --> <button id="25">Left</button> + <!-- Siri remote pan right --> <button id="26">Right</button> + </customcontroller> + </global> + <Home> + <customcontroller name="SiriRemote"> + <button id="6">ActivateWindow(FavouritesBrowser)</button> + </customcontroller> + </Home> + <FullscreenVideo> + <customcontroller name="SiriRemote"> + <button id="1">VolumeUp</button> + <button id="2">VolumeDown</button> + <button id="3">StepBack</button> + <button id="4">StepForward</button> + <button id="5">Pause</button> + <button id="6">Stop</button> + <button id="7">OSD</button> + <button id="8">noop</button> + <button id="9">noop</button> + <button id="10">noop</button> + <button id="11">noop</button> + </customcontroller> + </FullscreenVideo> + <FullscreenLiveTV> + <customcontroller name="SiriRemote"> + <button id="3">ChannelDown</button> + <button id="4">ChannelUp</button> + <button id="8">noop</button> + <button id="9">noop</button> + <button id="10">noop</button> + <button id="11">noop</button> + </customcontroller> + </FullscreenLiveTV> + <FullscreenRadio> + <customcontroller name="SiriRemote"> + <button id="3">ChannelDown</button> + <button id="4">ChannelUp</button> + </customcontroller> + </FullscreenRadio> + <Visualisation> + <customcontroller name="SiriRemote"> + <button id="1">VolumeUp</button> + <button id="2">VolumeDown</button> + <button id="3">SkipPrevious</button> + <button id="4">SkipNext</button> + <button id="5">Pause</button> + <button id="6">Fullscreen</button> + <button id="7">OSD</button> + </customcontroller> + </Visualisation> + <SlideShow> + <customcontroller name="SiriRemote"> + <button id="1">ZoomIn</button> + <button id="2">ZoomOut</button> + <button id="3">PreviousPicture</button> + <button id="4">NextPicture</button> + <button id="6">Stop</button> + <button id="7">Info</button> + </customcontroller> + </SlideShow> + <ScreenCalibration> + <customcontroller name="SiriRemote"> + <button id="5">NextCalibration</button> + </customcontroller> + </ScreenCalibration> + <VideoOSD> + <customcontroller name="SiriRemote"> + <button id="7">Back</button> + </customcontroller> + </VideoOSD> + <VideoMenu> + <customcontroller name="SiriRemote"> + <button id="5">Select</button> + <button id="6">Stop</button> + <button id="7">OSD</button> + </customcontroller> + </VideoMenu> + <Videos> + <customcontroller name="SiriRemote"> + <button id="7">ContextMenu</button> + </customcontroller> + </Videos> + <PictureInfo> + <customcontroller name="SiriRemote"> + <button id="3">Left</button> + <button id="4">Right</button> + </customcontroller> + </PictureInfo> +</keymap> diff --git a/system/keymaps/gamepad.xml b/system/keymaps/gamepad.xml new file mode 100644 index 0000000..cc440c3 --- /dev/null +++ b/system/keymaps/gamepad.xml @@ -0,0 +1,322 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This file contains the mapping of EventServer "gamepad" keys to actions within Kodi. --> +<!-- --> +<!-- The format is: --> +<!-- <window> --> +<!-- <device> --> +<!-- <button>action</button> --> +<!-- </device> --> +<!-- </window> --> +<!-- --> +<!-- The <global> section is a fall through - they will only be used if the button is --> +<!-- not used in the current window's section. --> +<!-- --> +<!-- Actions can be built-in functions. --> +<!-- eg <B>ActivateWindow(Music)</B> --> +<!-- would automatically go to Music on the press of the B button. --> +<!-- --> +<!-- --> +<!-- An empty action removes the corresponding mapping from default and parent keymaps. --> +<!-- This is different from a "noop" action, which disables a button. --> +<!-- --> +<!-- More documentation on keymaps can be found on http://kodi.wiki/view/keymaps --> +<keymap> + <global> + <gamepad> + <A>Select</A> + <B>Back</B> + <X>FullScreen</X> + <Y>Queue</Y> + <white>ContextMenu</white> + <black/> + <start>ActivateWindow(PlayerControls)</start> + <back>PreviousMenu</back> + <dpadleft>Left</dpadleft> + <dpadright>Right</dpadright> + <dpadup>Up</dpadup> + <dpaddown>Down</dpaddown> + <leftthumbbutton>Screenshot</leftthumbbutton> + <rightthumbbutton>ActivateWindow(ShutdownMenu)</rightthumbbutton> + <leftanalogtrigger>ScrollUp</leftanalogtrigger> + <rightanalogtrigger>ScrollDown</rightanalogtrigger> + <rightthumbstickleft>AnalogSeekBack</rightthumbstickleft> + <rightthumbstickright>AnalogSeekForward</rightthumbstickright> + <rightthumbstickup>VolumeUp</rightthumbstickup> + <rightthumbstickdown>VolumeDown</rightthumbstickdown> + </gamepad> + </global> + <FileManager> + <gamepad> + <Y>Highlight</Y> + </gamepad> + </FileManager> + <MusicPlaylist> + <gamepad> + <Y>Delete</Y> + <black>Back</black> + </gamepad> + </MusicPlaylist> + <MusicPlaylistEditor> + <gamepad> + <Y>Queue</Y> + </gamepad> + </MusicPlaylistEditor> + <Music> + <gamepad> + <Y>Queue</Y> + <black>Playlist</black> + </gamepad> + </Music> + <FullscreenVideo> + <gamepad> + <A>Pause</A> + <B>Stop</B> + <Y>AspectRatio</Y> + <black>PlayerProcessInfo</black> + <white>Info</white> + <back>Seek(-7)</back><!-- Replaces smallstepback --> + <start>OSD</start> + <leftanalogtrigger>AnalogRewind</leftanalogtrigger> + <rightanalogtrigger>AnalogFastForward</rightanalogtrigger> + <dpadleft>StepBack</dpadleft> + <dpadright>StepForward</dpadright> + <dpadup>ChapterOrBigStepForward</dpadup> + <dpaddown>ChapterOrBigStepBack</dpaddown> + </gamepad> + </FullscreenVideo> + <FullscreenGame> + <gamepad> + <A>Pause</A> + <B>Stop</B> + <Y>AspectRatio</Y> + <black>CodecInfo</black> + <white>Info</white> + <back>Seek(-7)</back><!-- Replaces smallstepback --> + <start>OSD</start> + <leftanalogtrigger>AnalogRewind</leftanalogtrigger> + <rightanalogtrigger>AnalogFastForward</rightanalogtrigger> + <dpadleft>StepBack</dpadleft> + <dpadright>StepForward</dpadright> + </gamepad> + </FullscreenGame> + <FullscreenLiveTV> + <gamepad> + <dpadleft>StepBack</dpadleft> + <dpadright>StepForward</dpadright> + <dpadup>ChannelUp</dpadup> + <dpaddown>ChannelDown</dpaddown> + </gamepad> + </FullscreenLiveTV> + <FullscreenRadio> + <gamepad> + <dpadleft>StepBack</dpadleft> + <dpadright>StepForward</dpadright> + <dpadup>ChannelUp</dpadup> + <dpaddown>ChannelDown</dpaddown> + </gamepad> + </FullscreenRadio> + <FullscreenInfo> + <gamepad> + <start>OSD</start> + <black>PlayerProcessInfo</black> + <white>Back</white> + <leftanalogtrigger>AnalogRewind</leftanalogtrigger> + <rightanalogtrigger>AnalogFastForward</rightanalogtrigger> + </gamepad> + </FullscreenInfo> + <PlayerControls> + <gamepad> + <start>Back</start> + </gamepad> + </PlayerControls> + <Visualisation> + <gamepad> + <A>Pause</A> + <B>Stop</B> + <Y>ActivateWindow(VisualisationPresetList)</Y> + <black>PlayerProcessInfo</black> + <white>Info</white> + <start>OSD</start> + <back>LockPreset</back> + <leftanalogtrigger>AnalogRewind</leftanalogtrigger> + <rightanalogtrigger>AnalogFastForward</rightanalogtrigger> + <dpadleft>StepBack</dpadleft> + <dpadright>StepForward</dpadright> + <dpadup>SkipNext</dpadup> + <dpaddown>SkipPrevious</dpaddown> + </gamepad> + </Visualisation> + <MusicOSD> + <gamepad> + <start>Back</start> + <black>PlayerProcessInfo</black> + <white>Info</white> + <leftanalogtrigger>AnalogRewind</leftanalogtrigger> + <rightanalogtrigger>AnalogFastForward</rightanalogtrigger> + </gamepad> + </MusicOSD> + <AddonSettings> + <gamepad> + <start>Back</start> + <leftanalogtrigger>AnalogRewind</leftanalogtrigger> + <rightanalogtrigger>AnalogFastForward</rightanalogtrigger> + </gamepad> + </AddonSettings> + <VisualisationPresetList> + <gamepad> + <start>Back</start> + <Y>Back</Y> + <leftanalogtrigger>AnalogRewind</leftanalogtrigger> + <rightanalogtrigger>AnalogFastForward</rightanalogtrigger> + </gamepad> + </VisualisationPresetList> + <SlideShow> + <gamepad> + <A>Pause</A> + <B>Stop</B> + <Y>Rotate</Y> + <X>ZoomNormal</X> + <black>Info</black> + <white>Info</white> + <righttrigger>NextPicture</righttrigger> + <lefttrigger>PreviousPicture</lefttrigger> + <dpadleft>PreviousPicture</dpadleft> + <dpadright>NextPicture</dpadright> + <dpadup>ZoomIn</dpadup> + <dpaddown>ZoomOut</dpaddown> + <leftthumbstick>AnalogMove</leftthumbstick> + <back>Stop</back> + </gamepad> + </SlideShow> + <ScreenCalibration> + <gamepad> + <leftthumbstick>AnalogMove</leftthumbstick> + <A>NextCalibration</A> + <black>ResetCalibration</black> + <white>NextResolution</white> + </gamepad> + </ScreenCalibration> + <ScreenCalibration> + <gamepad> + <leftthumbstick>AnalogMove</leftthumbstick> + <A>NextCalibration</A> + <black>ResetCalibration</black> + </gamepad> + </ScreenCalibration> + <VideoOSD> + <gamepad> + <start>Back</start> + <black>PlayerProcessInfo</black> + <white>Info</white> + <leftanalogtrigger>AnalogRewind</leftanalogtrigger> + <rightanalogtrigger>AnalogFastForward</rightanalogtrigger> + </gamepad> + </VideoOSD> + <VideoMenu> + <gamepad> + <Y>AspectRatio</Y> + <B>Stop</B> + <start>OSD</start> + <white>Info</white> + <black>PlayerProcessInfo</black> + <leftanalogtrigger>AnalogRewind</leftanalogtrigger> + <rightanalogtrigger>AnalogFastForward</rightanalogtrigger> + </gamepad> + </VideoMenu> + <OSDVideoSettings> + <gamepad> + <X/> + <Y>AspectRatio</Y> + <start>Back</start> + <black>PlayerProcessInfo</black> + <white>Info</white> + <leftanalogtrigger>AnalogRewind</leftanalogtrigger> + <rightanalogtrigger>AnalogFastForward</rightanalogtrigger> + </gamepad> + </OSDVideoSettings> + <OSDAudioSettings> + <gamepad> + <X/> + <Y>AspectRatio</Y> + <start>Back</start> + <black>PlayerProcessInfo</black> + <white>Info</white> + <leftanalogtrigger>AnalogRewind</leftanalogtrigger> + <rightanalogtrigger>AnalogFastForward</rightanalogtrigger> + </gamepad> + </OSDAudioSettings> + <VideoBookmarks> + <gamepad> + <X/> + <Y>Delete</Y> + <start>Back</start> + <leftanalogtrigger>AnalogRewind</leftanalogtrigger> + <rightanalogtrigger>AnalogFastForward</rightanalogtrigger> + </gamepad> + </VideoBookmarks> + <Videos> + <gamepad> + <black>Delete</black> + </gamepad> + </Videos> + <VideoPlaylist> + <gamepad> + <Y>Delete</Y> + <black>Back</black> + </gamepad> + </VideoPlaylist> + <VirtualKeyboard> + <gamepad> + <start>Enter</start> + <B>BackSpace</B> + <Y>Shift</Y> + <X>Symbols</X> + <lefttrigger>CursorLeft</lefttrigger> + <righttrigger>CursorRight</righttrigger> + </gamepad> + </VirtualKeyboard> + <ContextMenu> + <gamepad> + <white>Back</white> + </gamepad> + </ContextMenu> + <Programs> + <gamepad> + <black>info</black> + </gamepad> + </Programs> + <NumericInput> + <gamepad> + <B>BackSpace</B> + <start>Enter</start> + <lefttrigger>SkipPrevious</lefttrigger> + <righttrigger>SkipNext</righttrigger> + </gamepad> + </NumericInput> + <GamepadInput> + <gamepad> + <start>Stop</start> <!-- Enter Password --> + </gamepad> + </GamepadInput> + <LockSettings> + <gamepad> + <start>Back</start> + </gamepad> + </LockSettings> + <ProfileSettings> + <gamepad> + <start>Back</start> + </gamepad> + </ProfileSettings> + <PictureInfo> + <gamepad> + <dpadleft>PreviousPicture</dpadleft> + <dpadright>NextPicture</dpadright> + </gamepad> + </PictureInfo> + <PlayerProcessInfo> + <gamepad> + <black>PlayerProcessInfo</black> + </gamepad> + </PlayerProcessInfo> +</keymap> diff --git a/system/keymaps/joystick.xml b/system/keymaps/joystick.xml new file mode 100644 index 0000000..2db760b --- /dev/null +++ b/system/keymaps/joystick.xml @@ -0,0 +1,415 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This file contains the mapping of joystick buttons to actions within --> +<!-- Kodi. --> +<!-- --> +<!-- The format is: --> +<!-- <window> --> +<!-- <joystick profile="game.controller.default"> --> +<!-- <button>action</button> --> +<!-- </joystick> --> +<!-- </window> --> +<!-- --> +<!-- The <global> section is a fall through - they will only be used if the --> +<!-- button is not used in the current window's section. --> +<!-- --> +<!-- The "profile" attribute specifies the controller profile whose buttons --> +<!-- are being mapped. Currently, the default controller profile is used for --> +<!-- every controller. In the future it may be possible to specify mappings --> +<!-- for the controller profile most similar to the user's physical --> +<!-- controller. --> +<!-- --> +<!-- Actions can be built-in functions. --> +<!-- eg <b>ActivateWindow(Music)</b> --> +<!-- would automatically go to Music on the press of the B button. --> +<!-- --> +<!-- Buttons can be overloaded with hold durations, in milliseconds: --> +<!-- <joystick profile="game.controller.default"> --> +<!-- <a>Select</a> --> +<!-- <a holdtime="500">ContextMenu</a> --> +<!-- </joystick> --> +<!-- --> +<!-- Buttons can be also require hotkeys to be pressed: --> +<!-- <joystick profile="game.controller.default"> --> +<!-- <start hotkey="back">Stop</start> --> +<!-- </joystick> --> +<!-- --> +<!-- Due to limitations in the button mapper, buttons can be overloaded with --> +<!-- different hold durations, but not different hotkeys for the same --> +<!-- duration. --> +<!-- --> +<!-- More documentation on keymaps can be found on --> +<!-- http://kodi.wiki/view/keymaps --> +<!-- --> +<keymap> + <global> + <joystick profile="game.controller.default"> + <a>Select</a> + <a holdtime="500">ContextMenu</a> + <b>Back</b> + <x>ContextMenu</x> + <y>FullScreen</y> + <start>ActivateWindow(PlayerControls)</start> + <back>ActivateWindow(Home)</back> + <guide>ActivateWindow(Home)</guide> + <up>Up</up> + <down>Down</down> + <right>Right</right> + <left>Left</left> + <leftthumb>Screenshot</leftthumb> + <rightthumb>ActivateWindow(ShutdownMenu)</rightthumb> + <lefttrigger>ScrollUp</lefttrigger> + <righttrigger>ScrollDown</righttrigger> + <leftbumper>ScrollUp</leftbumper> + <rightbumper>ScrollDown</rightbumper> + <leftstick direction="left">Left</leftstick> + <leftstick direction="right">Right</leftstick> + <leftstick direction="up">Up</leftstick> + <leftstick direction="down">Down</leftstick> + <rightstick direction="left">VolumeDown</rightstick> + <rightstick direction="right">VolumeUp</rightstick> + <rightstick direction="up">VolumeUp</rightstick> + <rightstick direction="down">VolumeDown</rightstick> + </joystick> + </global> + <Home> + <joystick profile="game.controller.default"> + <b>Back</b> + <b holdtime="500">ActivateWindow(ShutdownMenu)</b> + </joystick> + </Home> + <FileManager> + <joystick profile="game.controller.default"> + <rightbumper>Highlight</rightbumper> + </joystick> + </FileManager> + <MusicPlaylist> + <joystick profile="game.controller.default"> + <leftbumper>Delete</leftbumper> + </joystick> + </MusicPlaylist> + <Music> + </Music> + <FullscreenVideo> + <joystick profile="game.controller.default"> + <a>Pause</a> + <b>Stop</b> + <b holdtime="500">FullScreen</b> + <x>OSD</x> + <y>FullScreen</y> + <start>Info</start> + <back>FullScreen</back> + <guide>OSD</guide> + <up>ChapterOrBigStepForward</up> + <down>ChapterOrBigStepBack</down> + <right>StepForward</right> + <left>StepBack</left> + <leftthumb>ShowSubtitles</leftthumb> + <rightthumb>AspectRatio</rightthumb> + <lefttrigger>AnalogRewind</lefttrigger> + <righttrigger>AnalogFastForward</righttrigger> + <leftbumper>AnalogRewind</leftbumper> + <rightbumper>AnalogFastForward</rightbumper> + <leftstick direction="left">AnalogSeekBack</leftstick> + <leftstick direction="right">AnalogSeekForward</leftstick> + <leftstick direction="up">noop</leftstick> + <leftstick direction="down">noop</leftstick> + </joystick> + </FullscreenVideo> + <FullscreenGame> + <joystick profile="game.controller.default"> + <start holdtime="1000">OSD</start> + <guide>OSD</guide> + <!-- Give games access to volume controls --> + <rightstick direction="left" hotkey="back">VolumeDown</rightstick> + <rightstick direction="right" hotkey="back">VolumeUp</rightstick> + <rightstick direction="up" hotkey="back">VolumeUp</rightstick> + <rightstick direction="down" hotkey="back">VolumeDown</rightstick> + <!-- RetroPie hotkeys, ref: https://github.com/RetroPie/RetroPie-Setup/wiki/RetroArch-Configuration --> + <!-- + <b hotkey="back">Player.Reset</b> + <x hotkey="back">OSD</x> + <start hotkey="back">Stop</start> + <rightbumper hotkey="back">Save</rightbumper> + <leftbumper hotkey="back">Load</leftbumper> + <righttrigger hotkey="back">AnalogFastForward</righttrigger> + <lefttrigger hotkey="back">AnalogRewind</lefttrigger> + <right hotkey="back">SaveSlotIncrease</right> + <left hotkey="back">SaveSlotDecrease</left> + --> + <!-- Hotkeys courtesy Julipo --> + <!-- + <a hotkey="back">Screenshot</a> + <x hotkey="back">FullScreen</x> + <y hotkey="back">OSD</y> + <start hotkey="back">OSD</start> + <rightbumper hotkey="back">Save</rightbumper> + <leftbumper hotkey="back">Load</leftbumper> + <leftstick direction="left" hotkey="back">SaveSlotDecrease</leftstick> + <leftstick direction="right" hotkey="back">SaveSlotIncrease</leftstick> + --> + <!-- Merged --> + <!-- Screenshot is disabled until it has been further automated + (currently pops up multiple annoying confusing dialogs) --> + <!-- <a hotkey="back">Screenshot</a> --> + <!-- Reset is disabled until player can undo a reset --> + <!--<b hotkey="back">PlayerControl(Reset)</b> --> + <x hotkey="back">OSD</x> + <y hotkey="back">OSD</y> + <start hotkey="back">Stop</start> + <rightbumper hotkey="back">AnalogFastForward</rightbumper> + <leftbumper hotkey="back">AnalogRewind</leftbumper> + <righttrigger hotkey="back">AnalogFastForward</righttrigger> + <lefttrigger hotkey="back">AnalogRewind</lefttrigger> + <!-- + <right hotkey="back">SaveSlotIncrease</right> + <left hotkey="back">SaveSlotDecrease</left> + <leftstick direction="left" hotkey="back">SaveSlotDecrease</leftstick> + <leftstick direction="right" hotkey="back">SaveSlotIncrease</leftstick> + --> + </joystick> + </FullscreenGame> + <FullscreenLiveTV> + <joystick profile="game.controller.default"> + <a>Pause</a> + <b>Stop</b> + <b holdtime="500">FullScreen</b> + <x>OSD</x> + <back>OSD</back> + <guide>OSD</guide> + <start>Info</start> + <up>ChannelUp</up> + <down>ChannelDown</down> + <left>StepBack</left> + <right>StepForward</right> + </joystick> + </FullscreenLiveTV> + <TVGuide> + <joystick profile="game.controller.default"> + <back>Menu</back> + </joystick> + </TVGuide> + <FullscreenRadio> + <joystick profile="game.controller.default"> + <a>Pause</a> + <b>Stop</b> + <b holdtime="500">FullScreen</b> + <x>OSD</x> + <back>OSD</back> + <guide>OSD</guide> + <start>Info</start> + <up>ChannelUp</up> + <down>ChannelDown</down> + <left>StepBack</left> + <right>StepForward</right> + </joystick> + </FullscreenRadio> + <RadioGuide> + <joystick profile="game.controller.default"> + <back>Menu</back> + </joystick> + </RadioGuide> + <FullscreenInfo> + <joystick profile="game.controller.default"> + <b>Close</b> + <x>OSD</x> + <start>Close</start> + <lefttrigger>AnalogRewind</lefttrigger> + <righttrigger>AnalogFastForward</righttrigger> + <leftbumper>AnalogRewind</leftbumper> + <rightbumper>AnalogFastForward</rightbumper> + </joystick> + </FullscreenInfo> + <PlayerControls> + <joystick profile="game.controller.default"> + <x>Close</x> + <leftthumb>Close</leftthumb> + <rightthumb>Close</rightthumb> + </joystick> + </PlayerControls> + <Visualisation> + <joystick profile="game.controller.default"> + <a>Pause</a> + <b>Stop</b> + <x>Addon.Default.OpenSettings(xbmc.player.musicviz)</x> + <y>ActivateWindow(VisualisationPresetList)</y> + <start>Info</start> + <rightthumb>ActivateWindow(MusicOSD)</rightthumb> + <up>SkipNext</up> + <down>SkipPrevious</down> + <left>StepBack</left> + <right>StepForward</right> + <lefttrigger>AnalogRewind</lefttrigger> + <righttrigger>AnalogFastForward</righttrigger> + <leftbumper>AnalogRewind</leftbumper> + <rightbumper>AnalogFastForward</rightbumper> + <leftstick direction="left">PreviousPreset</leftstick> + <leftstick direction="right">NextPreset</leftstick> + <leftstick direction="up">noop</leftstick> + <leftstick direction="down">noop</leftstick> + </joystick> + </Visualisation> + <MusicOSD> + <joystick profile="game.controller.default"> + <b>Close</b> + <start>Info</start> + </joystick> + </MusicOSD> + <VisualisationPresetList> + <joystick profile="game.controller.default"> + <b>Close</b> + </joystick> + </VisualisationPresetList> + <SlideShow> + <joystick profile="game.controller.default"> + <a>Pause</a> + <b>Stop</b> + <y>ZoomNormal</y> + <leftbumper>Rotate</leftbumper> + <rightbumper>Info</rightbumper> + <up>ZoomIn</up> + <down>ZoomOut</down> + <left>PreviousPicture</left> + <right>NextPicture</right> + <leftstick direction="left">AnalogMoveXLeft</leftstick> + <leftstick direction="right">AnalogMoveXRight</leftstick> + <leftstick direction="up">AnalogMoveYUp</leftstick> + <leftstick direction="down">AnalogMoveYDown</leftstick> + <lefttrigger>ZoomOut</lefttrigger> + <righttrigger>ZoomIn</righttrigger> + </joystick> + </SlideShow> + <ScreenCalibration> + <joystick profile="game.controller.default"> + <x>ResetCalibration</x> + <leftbumper>NextResolution</leftbumper> + <rightbumper>NextCalibration</rightbumper> + </joystick> + </ScreenCalibration> + <ScreenCalibration> + <joystick profile="game.controller.default"> + <x>ResetCalibration</x> + <leftbumper>NextResolution</leftbumper> + <rightbumper>NextCalibration</rightbumper> + </joystick> + </ScreenCalibration> + <VideoOSD> + <joystick profile="game.controller.default"> + <b>Close</b> + </joystick> + </VideoOSD> + <VideoMenu> + <joystick profile="game.controller.default"> + <b>Stop</b> + <x>OSD</x> + <leftbumper>AspectRatio</leftbumper> + <start>Info</start> + </joystick> + </VideoMenu> + <OSDVideoSettings> + <joystick profile="game.controller.default"> + <leftbumper>AspectRatio</leftbumper> + <x>Close</x> + </joystick> + </OSDVideoSettings> + <OSDAudioSettings> + <joystick profile="game.controller.default"> + <leftbumper>AspectRatio</leftbumper> + <x>Close</x> + </joystick> + </OSDAudioSettings> + <VideoBookmarks> + <joystick profile="game.controller.default"> + <leftbumper>Delete</leftbumper> + </joystick> + </VideoBookmarks> + <Videos> + </Videos> + <VideoPlaylist> + <joystick profile="game.controller.default"> + <leftbumper>Delete</leftbumper> + </joystick> + </VideoPlaylist> + <VirtualKeyboard> + <joystick profile="game.controller.default"> + <a>Select</a> + <a holdtime="500">Shift</a> + <b>BackSpace</b> + <y>Symbols</y> + <leftbumper>Shift</leftbumper> + <leftthumb>Enter</leftthumb> + <lefttrigger>CursorLeft</lefttrigger> + <righttrigger>CursorRight</righttrigger> + <x>VoiceRecognizer</x> + <start>VoiceRecognizer</start> + </joystick> + </VirtualKeyboard> + <ContextMenu> + <joystick profile="game.controller.default"> + <b>Close</b> + </joystick> + </ContextMenu> + <Settings> + <joystick profile="game.controller.default"> + <b>PreviousMenu</b> + </joystick> + </Settings> + <AddonInformation> + <joystick profile="game.controller.default"> + <b>Close</b> + </joystick> + </AddonInformation> + <AddonSettings> + <joystick profile="game.controller.default"> + <b>Close</b> + </joystick> + </AddonSettings> + <TextViewer> + <joystick profile="game.controller.default"> + <b>Close</b> + </joystick> + </TextViewer> + <shutdownmenu> + <joystick profile="game.controller.default"> + <b>PreviousMenu</b> + <leftthumb>PreviousMenu</leftthumb> + </joystick> + </shutdownmenu> + <submenu> + <joystick profile="game.controller.default"> + <b>PreviousMenu</b> + </joystick> + </submenu> + <MusicInformation> + <joystick profile="game.controller.default"> + <b>Close</b> + </joystick> + </MusicInformation> + <MovieInformation> + <joystick profile="game.controller.default"> + <b>Close</b> + </joystick> + </MovieInformation> + <NumericInput> + <joystick profile="game.controller.default"> + <b>BackSpace</b> + <leftthumb>Enter</leftthumb> + </joystick> + </NumericInput> + <GamepadInput> + <joystick profile="game.controller.default"> + <leftthumb>Stop</leftthumb> + </joystick> + </GamepadInput> + <LockSettings> + <joystick profile="game.controller.default"> + <b>PreviousMenu</b> + <leftthumb>Close</leftthumb> + </joystick> + </LockSettings> + <ProfileSettings> + <joystick profile="game.controller.default"> + <b>PreviousMenu</b> + <leftthumb>Close</leftthumb> + </joystick> + </ProfileSettings> +</keymap> diff --git a/system/keymaps/keyboard.xml b/system/keymaps/keyboard.xml new file mode 100644 index 0000000..49177c4 --- /dev/null +++ b/system/keymaps/keyboard.xml @@ -0,0 +1,849 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This file contains the mapping of keyboard keys to actions within Kodi. --> +<!-- --> +<!-- The format is: --> +<!-- <window> --> +<!-- <device> --> +<!-- <button>action</button> --> +<!-- </device> --> +<!-- </window> --> +<!-- --> +<!-- The <global> section is a fall through - they will only be used if the button is --> +<!-- not used in the current window's section. --> +<!-- --> +<!-- Actions can be built-in functions. --> +<!-- eg <B>ActivateWindow(Music)</B> --> +<!-- would automatically go to Music on the press of the B button. --> +<!-- --> +<!-- Long presses --> +<!-- A limitation is that if a single press is mapped in a section, a global "longpress"--> +<!-- will be ignored. The workaround is to duplicate the long mapping in the section. --> +<!-- --> +<!-- An empty action removes the corresponding mapping from default and parent keymaps. --> +<!-- This is different from a "noop" action, which disables a button. --> +<!-- --> +<!-- More documentation on keymaps can be found on http://kodi.wiki/view/keymaps --> +<keymap> + <global> + <keyboard> + <p>Play</p> + <q>Queue</q> + <f>FastForward</f> + <r>Rewind</r> + <y>SwitchPlayer</y> + <left>Left</left> + <right>Right</right> + <up>Up</up> + <down>Down</down> + <left mod="ctrl">analogseekback</left> + <right mod="ctrl">analogseekforward</right> + <pageup>PageUp</pageup> + <pagedown>PageDown</pagedown> + <return>Select</return> + <return mod="longpress">ContextMenu</return> + <return mod="ctrl">Enter</return> + <enter>Select</enter> + <enter mod="longpress">ContextMenu</enter> + <enter mod="ctrl">Enter</enter> + <backspace>Back</backspace> + <browser_back>Back</browser_back> + <browser_back mod="longpress">ActivateWindow(Home)</browser_back> + <key id='65446'>Back</key> + <m>Menu</m> + <n mod="ctrl">ActivateWindow(PlayerControls)</n> + <s>ActivateWindow(ShutdownMenu)</s> + <escape>PreviousMenu</escape> + <escape mod="longpress">Back</escape> + <i>Info</i> + <menu>ContextMenu</menu> + <menu mod="longpress">Menu</menu> + <c>ContextMenu</c> + <c mod="longpress">Menu</c> + <space>Pause</space> + <x>Stop</x> + <period>SkipNext</period> + <comma>SkipPrevious</comma> + <tab>FullScreen</tab> + <printscreen>Screenshot</printscreen> + <s mod="ctrl">Screenshot</s> + <minus>VolumeDown</minus> + <plus>VolumeUp</plus> + <equals>VolumeUp</equals> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + <numpadminus>VolumeDown</numpadminus> + <numpadplus>VolumeUp</numpadplus> + <numpadzero>Number0</numpadzero> + <numpadone>Number1</numpadone> + <numpadtwo>Number2</numpadtwo> + <numpadthree>Number3</numpadthree> + <numpadfour>Number4</numpadfour> + <numpadfive>Number5</numpadfive> + <numpadsix>Number6</numpadsix> + <numpadseven>Number7</numpadseven> + <numpadeight>Number8</numpadeight> + <numpadnine>Number9</numpadnine> + <backslash>ToggleFullScreen</backslash> + <home>FirstPage</home> + <end>LastPage</end> + <power>ActivateWindow(ShutdownMenu)</power> + <sleep>ActivateWindow(ShutdownMenu)</sleep> + <!-- PVR windows --> + <e>ActivateWindow(TVGuide)</e> + <epg>ActivateWindow(TVGuide)</epg> + <h>ActivateWindow(TVChannels)</h> + <j>ActivateWindow(RadioChannels)</j> + <k>ActivateWindow(TVRecordings)</k> + <b>ActivateWindow(TVTimers)</b> + <!-- PVR --> + <red>ActivateWindow(TVChannels)</red> + <green>ActivateWindow(Videos)</green> + <yellow>ActivateWindow(Music)</yellow> + <blue>ActivateWindow(Pictures)</blue> + <!-- Multimedia keyboard keys --> + <browser_back>Back</browser_back> + <browser_forward/> + <browser_refresh/> + <browser_stop/> + <browser_search/> + <browser_favorites>ActivateWindow(FavouritesBrowser)</browser_favorites> + <favorites>ActivateWindow(FavouritesBrowser)</favorites> + <config>ActivateWindow(Settings)</config> + <browser_home>ActivateWindow(Home)</browser_home> + <homepage>ActivateWindow(Home)</homepage> + <volume_mute>Mute</volume_mute> + <volume_down>VolumeDown</volume_down> + <volume_up>VolumeUp</volume_up> + <next_track>SkipNext</next_track> + <prev_track>SkipPrevious</prev_track> + <stop>Stop</stop> + <play_pause>PlayPause</play_pause> + <play_pause mod="longpress">Info</play_pause> + <fastforward>FastForward</fastforward> + <rewind>Rewind</rewind> + <record/> + <launch_mail></launch_mail> + <launch_media_select>ActivateWindow(Music)</launch_media_select> + <launch_app1_pc_icon>ActivateWindow(Programs)</launch_app1_pc_icon> + <launch_app2_pc_icon>ActivateWindow(Programs)</launch_app2_pc_icon> + <launch_file_browser/> + <launch_media_center/> + <!-- ****************************************************** --> + <!-- MS Media Center keyboard shortcuts sent by MCE remotes --> + <!-- See http://msdn.microsoft.com/en-us/library/bb189249.aspx --> + <p mod="ctrl,shift">Play</p> <!-- Play --> + <s mod="ctrl,shift">Stop</s> <!-- Stop --> + <p mod="ctrl">Pause</p> <!-- Pause --> + <f mod="ctrl,shift">FastForward</f> <!-- Fwd --> + <b mod="ctrl,shift">Rewind</b> <!-- Rew --> + <f mod="ctrl">SkipNext</f> <!-- Skip --> + <b mod="ctrl">SkipPrevious</b> <!-- Replay --> + <d mod="ctrl">Info</d> <!-- MCE Details --> + <r mod="ctrl">Record</r> <!-- Record --> + <f4 mod="alt">PreviousMenu</f4> <!-- Exit --> + <f10>VolumeUp</f10> <!-- MCE Vol up --> + <f9>VolumeDown</f9> <!-- MCE Vol down --> + <f8>Mute</f8> <!-- MCE mute --> + <g mod="ctrl">ActivateWindow(TVGuide)</g> <!-- MCE Guide --> + <m mod="ctrl">ActivateWindow(music)</m> <!-- MCE My music --> + <i mod="ctrl">ActivateWindow(pictures)</i> <!-- MCE My pictures --> + <e mod="ctrl">ActivateWindow(videos)</e> <!-- MCE videos --> + <m mod="ctrl,shift">PlayerControl(ShowVideoMenu)</m> <!-- MCE DVD menu --> + <o mod="ctrl">ActivateWindow(TVRecordings)</o> <!-- MCE Recorded TV --> + <t mod="ctrl">ActivateWindow(TVChannels)</t> <!-- MCE Live TV --> + <t mod="ctrl,shift">ActivateWindow(TVChannels)</t> <!-- MCE TV --> + <a mod="ctrl">ActivateWindow(RadioChannels)</a> <!-- MCE Radio --> + <!-- MCE keypresses without an obvious use in Kodi --> + <u mod="ctrl">Notification(MCEKeypress, DVD subtitle, 3)</u> + <a mod="ctrl,shift">Notification(MCEKeypress, DVD audio, 3)</a> + <k mod="ctrl,shift">ReloadKeymaps</k> + <d mod="ctrl,shift">ToggleDebug</d> + <r mod="ctrl,shift">ToggleDirtyRegionVisualization</r> + <f11>HDRToggle</f11> + </keyboard> + </global> + <LoginScreen> + <keyboard> + <end mod="ctrl">ShutDown()</end> + </keyboard> + </LoginScreen> + <Home> + <keyboard> + <i>info</i> + <end mod="ctrl">ShutDown()</end> + <backspace mod="longpress">ActivateWindow(ShutdownMenu)</backspace> + </keyboard> + </Home> + <VirtualKeyboard> + <keyboard> + <c mod="longpress">noop</c> + <left>Left</left> + <right>Right</right> + <up>Up</up> + <down>Down</down> + <return>Select</return> + <enter>Select</enter> + <backspace>Backspace</backspace> + <browser_back>Backspace</browser_back> + <browser_back mod="longpress">PreviousMenu</browser_back> + <play_pause mod="longpress">Enter</play_pause> + <browser_search>VoiceRecognizer</browser_search> + <menu>VoiceRecognizer</menu> + <return mod="longpress">VoiceRecognizer</return> + <enter mod="longpress">VoiceRecognizer</enter> + <play_pause>VoiceRecognizer</play_pause> + </keyboard> + </VirtualKeyboard> + <TVChannels> + <keyboard> + <delete>Delete</delete> + <m mod="ctrl">Move</m> + <h>PreviousMenu</h> + <period mod="longpress">ChannelNumberSeparator</period> + <numpadperiod>ChannelNumberSeparator</numpadperiod> + </keyboard> + </TVChannels> + <TVRecordings> + <keyboard> + <delete>Delete</delete> + <r>Rename</r> + <k>PreviousMenu</k> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </keyboard> + </TVRecordings> + <TVTimers> + <keyboard> + <delete>Delete</delete> + <r>Rename</r> + <b>PreviousMenu</b> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </keyboard> + </TVTimers> + <TVTimerRules> + <keyboard> + <delete>Delete</delete> + <r>Rename</r> + <b>PreviousMenu</b> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </keyboard> + </TVTimerRules> + <TVGuide> + <keyboard> + <e>PreviousMenu</e> + <t>ShowTimerRule</t> + <epg>PreviousMenu</epg> + <g>NextChannelGroup</g> + <n>ActivateWindow(PVRGuideControls)</n> + <backspace mod="longpress">Number0</backspace> <!-- 0 key goes to "now" on EPG timeline --> + <browser_back mod="longpress">Number0</browser_back> <!-- 0 key goes to "now" on EPG timeline --> + <period mod="longpress">ChannelNumberSeparator</period> + <numpadperiod>ChannelNumberSeparator</numpadperiod> + </keyboard> + </TVGuide> + <RadioChannels> + <keyboard> + <delete>Delete</delete> + <m mod="ctrl">Move</m> + <j>PreviousMenu</j> + <period mod="longpress">ChannelNumberSeparator</period> + <numpadperiod>ChannelNumberSeparator</numpadperiod> + </keyboard> + </RadioChannels> + <RadioRecordings> + <keyboard> + <delete>Delete</delete> + <r>Rename</r> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </keyboard> + </RadioRecordings> + <RadioTimers> + <keyboard> + <delete>Delete</delete> + <r>Rename</r> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </keyboard> + </RadioTimers> + <RadioTimerRules> + <keyboard> + <delete>Delete</delete> + <r>Rename</r> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </keyboard> + </RadioTimerRules> + <RadioGuide> + <keyboard> + <e>PreviousMenu</e> + <t>ShowTimerRule</t> + <epg>PreviousMenu</epg> + <g>NextChannelGroup</g> + <n>ActivateWindow(PVRGuideControls)</n> + <backspace mod="longpress">Number0</backspace> <!-- 0 key goes to "now" on EPG timeline --> + <browser_back mod="longpress">Number0</browser_back> <!-- 0 key goes to "now" on EPG timeline --> + <period mod="longpress">ChannelNumberSeparator</period> + <numpadperiod>ChannelNumberSeparator</numpadperiod> + </keyboard> + </RadioGuide> + <FileManager> + <keyboard> + <space>Highlight</space> + <delete>Delete</delete> + <m>Move</m> + <r>Rename</r> + <play_pause mod="longpress">Highlight</play_pause> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </FileManager> + <MusicPlaylist> + <keyboard> + <n>Back</n> + <delete>Delete</delete> + <u>MoveItemUp</u> + <d>MoveItemDown</d> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </MusicPlaylist> + <MusicPlaylistEditor> + <keyboard> + <u>MoveItemUp</u> + <d>MoveItemDown</d> + <delete>Delete</delete> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </MusicPlaylistEditor> + <Music> + <keyboard> + <n>Playlist</n> + <q>Queue</q> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </Music> + <FullscreenVideo> + <keyboard> + <f>FastForward</f> + <r>Rewind</r> + <period>StepForward</period> + <comma>StepBack</comma> + <backspace>Fullscreen</backspace> + <backspace mod="longpress">Stop</backspace> + <browser_back>Fullscreen</browser_back> + <browser_back mod="longpress">Stop</browser_back> + <quote>Seek(-7)</quote> <!-- Replaces smallstepback --> + <opensquarebracket>BigStepForward</opensquarebracket> + <closesquarebracket>BigStepBack</closesquarebracket> + <return>OSD</return> + <enter>OSD</enter> + <return mod="longpress">PlayPause</return> + <enter mod="longpress">PlayPause</enter> + <m>OSD</m> + <menu>OSD</menu> + <i>Info</i> + <o>PlayerProcessInfo</o> + <o mod="ctrl,shift">PlayerDebug</o> + <o mod="alt">PlayerDebugVideo</o> + <z>AspectRatio</z> + <zoom>AspectRatio</zoom> + <t>ShowSubtitles</t> + <t mod="ctrl">SubtitleAlign</t> + <l>NextSubtitle</l> + <left>StepBack</left> + <right>StepForward</right> + <up>ChapterOrBigStepForward</up> + <down>ChapterOrBigStepBack</down> + <up mod="longpress">AudioNextLanguage</up> + <down mod="longpress">NextSubtitle</down> + <left mod="alt">PlayerControl(tempodown)</left> + <right mod="alt">PlayerControl(tempoup)</right> + <a>AudioDelay</a> + <a mod="ctrl">AudioNextLanguage</a> + <escape>Fullscreen</escape> + <c>Playlist</c> + <v>ActivateWindow(Teletext)</v> + <v mod="ctrl">VideoNextStream</v> + <text>ActivateWindow(Teletext)</text> + <up mod="ctrl">SubtitleShiftUp</up> + <down mod="ctrl">SubtitleShiftDown</down> + <pageup>SkipNext</pageup> + <pagedown>SkipPrevious</pagedown> + <plus mod="ctrl">VolAmpUp</plus> + <equals mod="ctrl">VolAmpUp</equals> + <minus mod="ctrl">VolAmpDown</minus> + <b mod="ctrl">CreateBookmark</b> + <b mod="alt">CreateEpisodeBookmark</b> + <f11 mod="alt">CycleToneMapMethod</f11> + </keyboard> + </FullscreenVideo> + <FullscreenGame> + <keyboard> + <f>FastForward</f> + <r>Rewind</r> + <backspace>OSD</backspace> + <backspace mod="longpress">Stop</backspace> + <browser_back>OSD</browser_back> + <browser_back mod="longpress">Stop</browser_back> + <return>OSD</return> + <enter>OSD</enter> + <m>OSD</m> + <menu>OSD</menu> + <i>Info</i> + <o>CodecInfo</o> + <z>AspectRatio</z> + <zoom>AspectRatio</zoom> + <escape>OSD</escape> + </keyboard> + </FullscreenGame> + <GameOSD> + <keyboard> + <m>OSD</m> + <menu>OSD</menu> + </keyboard> + </GameOSD> + <GameSaves> + <keyboard> + <delete>delete</delete> + </keyboard> + </GameSaves> + <InGameSaves> + <keyboard> + <delete>delete</delete> + </keyboard> + </InGameSaves> + <VideoTimeSeek> + <keyboard> + <return>Select</return> + <enter>Select</enter> + </keyboard> + </VideoTimeSeek> + <FullscreenInfo> + <keyboard> + <f>FastForward</f> + <r>Rewind</r> + <period>StepForward</period> + <o>PlayerProcessInfo</o> + <i>Back</i> + <d mod="ctrl">Back</d> + <m>OSD</m> + <menu>OSD</menu> + <return mod="longpress">PlayPause</return> + <enter mod="longpress">PlayPause</enter> + </keyboard> + </FullscreenInfo> + <PlayerControls> + <keyboard> + <m mod="ctrl">Back</m> + </keyboard> + </PlayerControls> + <Visualisation> + <keyboard> + <f>FastForward</f> + <r>Rewind</r> + <period>SkipNext</period> + <comma>SkipPrevious</comma> + <pageup>IncreaseRating</pageup> + <pagedown>DecreaseRating</pagedown> + <backspace>Fullscreen</backspace> + <backspace mod="longpress">Stop</backspace> + <browser_back>Fullscreen</browser_back> + <browser_back mod="longpress">Stop</browser_back> + <return>OSD</return> + <return mod="longpress">PlayPause</return> + <enter>OSD</enter> + <enter mod="longpress">PlayPause</enter> + <m>OSD</m> + <menu>OSD</menu> + <i>Info</i> + <p>ActivateWindow(VisualisationPresetList)</p> + <v>Addon.Default.OpenSettings(xbmc.player.musicviz)</v> + <text>Addon.Default.OpenSettings(xbmc.player.musicviz)</text> + <n>ActivateWindow(MusicPlaylist)</n> + <left>StepBack</left> + <right>StepForward</right> + <left mod="longpress">Rewind</left> + <right mod="longpress">FastForward</right> + <up>SkipNext</up> + <down>SkipPrevious</down> + <o>PlayerProcessInfo</o> + <l>LockPreset</l> + <escape>FullScreen</escape> + </keyboard> + </Visualisation> + <MusicOSD> + <keyboard> + <f>FastForward</f> + <r>Rewind</r> + <period>SkipNext</period> + <comma>SkipPrevious</comma> + <m>Back</m> + <menu>Back</menu> + <i>Info</i> + <o>PlayerProcessInfo</o> + <p>ActivateWindow(VisualisationPresetList)</p> + <v>Addon.Default.OpenSettings(xbmc.player.musicviz)</v> + <text>Addon.Default.OpenSettings(xbmc.player.musicviz)</text> + <n>ActivateWindow(MusicPlaylist)</n> + </keyboard> + </MusicOSD> + <VisualisationPresetList> + <keyboard> + <f>FastForward</f> + <r>Rewind</r> + <period>SkipNext</period> + <comma>SkipPrevious</comma> + <m>Back</m> + <i>Info</i> + <o>PlayerProcessInfo</o> + <p>Back</p> + <v>Back</v> + <text>Back</text> + <n>ActivateWindow(MusicPlaylist)</n> + </keyboard> + </VisualisationPresetList> + <SlideShow> + <keyboard> + <zero>ZoomNormal</zero> + <one>ZoomLevel1</one> + <two>ZoomLevel2</two> + <three>ZoomLevel3</three> + <four>ZoomLevel4</four> + <five>ZoomLevel5</five> + <six>ZoomLevel6</six> + <seven>ZoomLevel7</seven> + <eight>ZoomLevel8</eight> + <nine>ZoomLevel9</nine> + <i>Info</i> + <o>Info</o> + <period>NextPicture</period> + <comma>PreviousPicture</comma> + <plus>ZoomIn</plus> + <minus>ZoomOut</minus> + <return>Rotate</return> + <enter>Rotate</enter> + <r>Rotate</r> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </SlideShow> + <ScreenCalibration> + <keyboard> + <return>NextCalibration</return> + <enter>NextCalibration</enter> + <d>ResetCalibration</d> + <r>NextResolution</r> + </keyboard> + </ScreenCalibration> + <ScreenCalibration> + <keyboard> + <return>NextCalibration</return> + <enter>NextCalibration</enter> + <d>ResetCalibration</d> + </keyboard> + </ScreenCalibration> + <VideoOSD> + <keyboard> + <m>Back</m> + <menu>Back</menu> + <g mod="ctrl">Back</g> <!-- MCE Guide button --> + <i>Info</i> + <o>PlayerProcessInfo</o> + </keyboard> + </VideoOSD> + <VideoMenu> + <keyboard> + <opensquarebracket>BigStepForward</opensquarebracket> + <closesquarebracket>BigStepBack</closesquarebracket> + <m>OSD</m> + <menu>OSD</menu> + <i>Info</i> + <o>PlayerProcessInfo</o> + <z>AspectRatio</z> + <zoom>AspectRatio</zoom> + <t>ShowSubtitles</t> + <l>NextSubtitle</l> + <a>AudioDelay</a> + <escape>Fullscreen</escape> + <return>Select</return> + <enter>Select</enter> <!-- backspace>Fullscreen</backspace --> + <pageup>SkipNext</pageup> + <pagedown>SkipPrevious</pagedown> + </keyboard> + </VideoMenu> + <OSDVideoSettings> + <keyboard> + <i>Info</i> + <o>PlayerProcessInfo</o> + </keyboard> + </OSDVideoSettings> + <OSDAudioSettings> + <keyboard> + <i>Info</i> + <o>PlayerProcessInfo</o> + </keyboard> + </OSDAudioSettings> + <VideoBookmarks> + <keyboard> + <delete>Delete</delete> + </keyboard> + </VideoBookmarks> + <Videos> + <keyboard> + <delete>Delete</delete> + <n>Playlist</n> + <w>ToggleWatched</w> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </Videos> + <VideoPlaylist> + <keyboard> + <n>Back</n> + <delete>Delete</delete> + <u>MoveItemUp</u> + <d>MoveItemDown</d> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </VideoPlaylist> + <Pictures> + <keyboard> + <delete>Delete</delete> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </Pictures> + <ContextMenu> + <keyboard> + <c>Back</c> + <menu>Back</menu> + </keyboard> + </ContextMenu> + <MusicInformation> + <keyboard> + <i>Back</i> + <d mod="ctrl">Back</d> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </MusicInformation> + <MovieInformation> + <keyboard> + <i>Back</i> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </MovieInformation> + <PictureInfo> + <keyboard> + <period>NextPicture</period> + <comma>PreviousPicture</comma> + <i>Back</i> + <d mod="ctrl">Back</d> + <o>Back</o> + <space>Pause</space> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </PictureInfo> + <Teletext> + <keyboard> + <v>Back</v> + <text>Back</text> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </keyboard> + </Teletext> + <Favourites> + <keyboard> + <backspace>Close</backspace> + <browser_back>Close</browser_back> + <u>MoveItemUp</u> + <d>MoveItemDown</d> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </Favourites> + <FavouritesBrowser> + <keyboard> + <u>MoveItemUp</u> + <d>MoveItemDown</d> + <delete>Delete</delete> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </FavouritesBrowser> + <NumericInput> + <keyboard> + <backspace>Close</backspace> + <browser_back>Close</browser_back> + </keyboard> + </NumericInput> + <FullscreenLiveTV> + <keyboard> + <left>StepBack</left> + <right>StepForward</right> + <up>Up</up> + <down>Down</down> + <return>OSD</return> + <enter>OSD</enter> + <g>ActivateWindow(PVRChannelGuide)</g> + <c>ActivateWindow(PVROSDChannels)</c> + <return mod="longpress">ActivateWindow(PVROSDChannels)</return> + <enter mod="longpress">ActivateWindow(PVROSDChannels)</enter> + <pageup>ChannelUp</pageup> + <pagedown>ChannelDown</pagedown> + <period mod="longpress">ChannelNumberSeparator</period> + <numpadperiod>ChannelNumberSeparator</numpadperiod> + </keyboard> + </FullscreenLiveTV> + <FullscreenRadio> + <keyboard> + <left>StepBack</left> + <right>StepForward</right> + <up>Up</up> + <down>Down</down> + <return>OSD</return> + <enter>OSD</enter> + <g>ActivateWindow(PVRChannelGuide)</g> + <c>ActivateWindow(PVROSDChannels)</c> + <return mod="longpress">ActivateWindow(PVROSDChannels)</return> + <enter mod="longpress">ActivateWindow(PVROSDChannels)</enter> + <pageup>ChannelUp</pageup> + <pagedown>ChannelDown</pagedown> + <period mod="longpress">ChannelNumberSeparator</period> + <numpadperiod>ChannelNumberSeparator</numpadperiod> + </keyboard> + </FullscreenRadio> + <FullscreenLiveTvPreview> + <keyboard> + <return>Select</return> + <enter>Select</enter> + </keyboard> + </FullscreenLiveTvPreview> + <FullscreenRadioPreview> + <keyboard> + <return>Select</return> + <enter>Select</enter> + </keyboard> + </FullscreenRadioPreview> + <FullscreenLiveTvInput> + <keyboard> + <return>Select</return> + <enter>Select</enter> + <period>ChannelNumberSeparator</period> + <numpadperiod>ChannelNumberSeparator</numpadperiod> + </keyboard> + </FullscreenLiveTvInput> + <FullscreenRadioInput> + <keyboard> + <return>Select</return> + <enter>Select</enter> + <period>ChannelNumberSeparator</period> + <numpadperiod>ChannelNumberSeparator</numpadperiod> + </keyboard> + </FullscreenRadioInput> + <PVROSDChannels> + <keyboard> + <period mod="longpress">ChannelNumberSeparator</period> + <numpadperiod>ChannelNumberSeparator</numpadperiod> + <backspace>Close</backspace> + <escape>Close</escape> + <browser_back>Close</browser_back> + </keyboard> + </PVROSDChannels> + <PVRChannelGuide> + <keyboard> + <backspace>Close</backspace> + <escape>Close</escape> + <browser_back>Close</browser_back> + </keyboard> + </PVRChannelGuide> + <PVRSettings> + <keyboard> + <backspace>PreviousMenu</backspace> + <browser_back>PreviousMenu</browser_back> + </keyboard> + </PVRSettings> + <FileBrowser> + <keyboard> + <space>Highlight</space> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </FileBrowser> + <ShutdownMenu> + <keyboard> + <s>Back</s> + </keyboard> + </ShutdownMenu> + <AddonInformation> + <keyboard> + <i>Back</i> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </AddonInformation> + <AddonSettings> + <keyboard> + <delete>Delete</delete> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </AddonSettings> + <Addon> + <keyboard> + <f1>Red</f1> + <red>Red</red> + <f2>Green</f2> + <green>Green</green> + <f3>Yellow</f3> + <yellow>Yellow</yellow> + <f4>Blue</f4> + <blue>Blue</blue> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </Addon> + <Programs> + <keyboard> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </Programs> + <Settings> + <keyboard> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </Settings> + <MediaFilter> + <keyboard> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </MediaFilter> + <Weather> + <keyboard> + <backspace mod="longpress">ActivateWindow(Home)</backspace> + </keyboard> + </Weather> + <PlayerProcessInfo> + <keyboard> + <o>PlayerProcessInfo</o> + </keyboard> + </PlayerProcessInfo> + <TextViewer> + <keyboard> + <t>ToggleFont</t> + </keyboard> + </TextViewer> +</keymap> diff --git a/system/keymaps/mouse.xml b/system/keymaps/mouse.xml new file mode 100644 index 0000000..3bb3f43 --- /dev/null +++ b/system/keymaps/mouse.xml @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This file contains the mapping of mouse keys to actions within Kodi. --> +<!-- --> +<!-- The format is: --> +<!-- <window> --> +<!-- <device> --> +<!-- <button>action</button> --> +<!-- </device> --> +<!-- </window> --> +<!-- --> +<!-- The <global> section is a fall through - they will only be used if the button is --> +<!-- not used in the current window's section. --> +<!-- --> +<!-- Actions can be built-in functions. --> +<!-- eg <middleclick>ActivateWindow(Music)</middleclick> --> +<!-- would automatically go to Music on the press of the middle mouse button. --> +<!-- --> +<!-- --> +<!-- An empty action removes the corresponding mapping from default and parent keymaps. --> +<!-- This is different from a "noop" action, which disables a button. --> +<!-- --> +<!-- Button Ids: --> +<!-- 0: left --> +<!-- 1: right --> +<!-- 2: middle --> +<!-- 3/4/5/6: extra --> +<!-- --> +<!-- More documentation on keymaps can be found on http://kodi.wiki/view/keymaps --> +<keymap> + <global> + <mouse> + <leftclick>leftclick</leftclick> + <rightclick>rightclick</rightclick> + <middleclick>middleclick</middleclick> + <doubleclick id="0">doubleclick</doubleclick> + <longclick id="0">contextmenu</longclick> + <longclick id="2">Menu</longclick> <!-- access to the blade menu via long right-click --> + <wheeldown>wheeldown</wheeldown> + <wheelup>wheelup</wheelup> + <mousedrag>mousedrag</mousedrag> + <mousedragend>mousedragend</mousedragend> + <mousemove>mousemove</mousemove> + </mouse> + </global> + <SlideShow> + <mouse> + <leftclick>Pause</leftclick> + <rightclick>PreviousMenu</rightclick> + <wheelup>PreviousPicture</wheelup> + <wheeldown>NextPicture</wheeldown> + </mouse> + </SlideShow> + <FullscreenVideo> + <mouse> + <rightclick>Info</rightclick> + </mouse> + </FullscreenVideo> + <FullscreenGame> + <mouse> + <rightclick>Info</rightclick> + </mouse> + </FullscreenGame> + <contextmenu> <!-- Give a way out of the context menu without actually having to select something. --> + <mouse> + <rightclick>back</rightclick> + </mouse> + </contextmenu> +</keymap> diff --git a/system/keymaps/nyxboard/keyboard.xml b/system/keymaps/nyxboard/keyboard.xml new file mode 100644 index 0000000..d868419 --- /dev/null +++ b/system/keymaps/nyxboard/keyboard.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Mappings for the Motorola Nyxboard remote --> +<keymap> + <global> + <keyboard> + <home>ActivateWindow(Home)</home> + <f3>OSD</f3> <!-- EPG: same as Guide (ctrl-G) on MCE remote --> + <f3 mod="shift">ActivateWindow(videos)</f3> <!-- Red --> + <f4 mod="shift">ActivateWindow(music)</f4> <!-- Green --> + <f5 mod="shift">ActivateWindow(pictures)</f5> <!-- Yellow --> + <f6 mod="shift">ActivateWindow(programs)</f6> <!-- Blue --> + <f4>ContextMenu</f4> <!-- User button --> + </keyboard> + </global> +</keymap> diff --git a/system/keymaps/osmc/osmc_remote.xml b/system/keymaps/osmc/osmc_remote.xml new file mode 100644 index 0000000..79f392e --- /dev/null +++ b/system/keymaps/osmc/osmc_remote.xml @@ -0,0 +1,576 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<!-- The second and third generation OSMC remotes use i and c keys that stop functioning with some keyboard languages in OSMC. -->
+<!-- We have remapped those keys in OSMC to kpleftparen and kprightparen with udev to overcome this issue. This file maps those keys to -->
+<!-- Kodi actions and adds tweaks to provide enhanced function. Home was remapped in v1&2 for consistency. The buttons map in Kodi as... -->
+<!-- -->
+<!-- OSMC with udev remap non-OSMCv1 non-OSMCv2 non-OSMCv3 -->
+<!-- Home = escape <key id="61467"> Home = home Home = home Home = escape -->
+<!-- Info = leftbracket <key id="61480"> Info = Info = i Info = i -->
+<!-- Up = up <key id="61568"> Up = up Up = up Up = up -->
+<!-- Down = down <key id="61569"> Down = down Down = down Down = down -->
+<!-- Left = left <key id="61570"> Left = left Left = left Left = left -->
+<!-- Right = right <key id="61571"> Right = right Right = right Right = right -->
+<!-- OK = return <key id="61453"> OK = return OK = return OK = return -->
+<!-- Back = browser_back <key id="61616"> Back = browser_back Back = browser_back Back = browser_back -->
+<!-- Menu = rightbracket <key id="61481"> Menu = Menu = c Menu = c -->
+<!-- Play = play_pause <key id="61629"> Play = play_pause Play = play_pause Play = play_pause -->
+<!-- Stop = stop <key id="61628"> Stop = stop Stop = stop Stop = stop -->
+<!-- Vol- = volume_down <key id="61624"> RW = rewind Vol- = minus Vol- = minus -->
+<!-- Vol+ = volume_up <key id="61625"> FF = fastforward Vol+ = equals Vol+ = equals -->
+<!-- -->
+<!-- Keymap created by DarwinDesign version 20-11-02 -->
+<!-- -->
+<keymap>
+ <global>
+ <keyboard>
+ <escape>PreviousMenu</escape>
+ <home>PreviousMenu</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ <leftbracket>Info</leftbracket>
+ <i>Info</i>
+ <leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
+ <i mod="longpress">noop</i> <!-- stops cycling -->
+ <left>Left</left>
+ <right>Right</right>
+ <up>Up</up>
+ <down>Down</down>
+ <return>Select</return>
+ <return mod="longpress">noop</return> <!-- removes default context menu & stops cycling -->
+ <browser_back>Back</browser_back>
+ <rightbracket>ContextMenu</rightbracket>
+ <c>ContextMenu</c>
+ <rightbracket mod="longpress">Menu</rightbracket>
+ <c mod="longpress">Menu</c>
+ <play_pause>PlayPause</play_pause>
+ <p>PlayPause</p>
+ <play_pause mod="longpress">noop</play_pause> <!-- removes default info & stops cycling -->
+ <p mod="longpress">noop</p>
+ <stop>Stop</stop>
+ <x>Stop</x>
+ <volume_down>VolumeDown</volume_down>
+ <volume_up>VolumeUp</volume_up>
+ <f2>Notification(OSMC Remote Controller, Low Battery Please Replace,5000)</f2>
+ </keyboard>
+ </global>
+ <Home>
+ <keyboard>
+ <escape>CECActivateSource</escape>
+ <home>CECActivateSource</home>
+ <escape mod="longpress">CECStandby</escape>
+ <home mod="longpress">CECStandby</home>
+ <leftbracket>info</leftbracket>
+ <i>info</i>
+ <browser_back mod="longpress">ActivateWindow(ShutdownMenu)</browser_back>
+ <return mod="longpress">ReloadSkin()</return>
+ <play_pause mod="longpress">UpdateLibrary(video)</play_pause>
+ <p mod="longpress">UpdateLibrary(video)</p>
+ </keyboard>
+ </Home>
+ <VirtualKeyboard>
+ <keyboard>
+ <rightbracket mod="longpress">noop</rightbracket>
+ <c mod="longpress">noop</c>
+ <up mod="longpress">Shift</up>
+ <down mod="longpress">Symbols</down>
+ <return mod="longpress">Enter</return>
+ </keyboard>
+ </VirtualKeyboard>
+ <FileManager>
+ <keyboard>
+ <right mod="longpress">Highlight</right>
+ <left mod="longpress">Highlight</left>
+ </keyboard>
+ </FileManager>
+ <FullscreenVideo>
+ <keyboard>
+ <escape>ActivateWindow(videobookmarks)</escape>
+ <home>ActivateWindow(videobookmarks)</home>
+ <escape mod="longpress">playerdebug</escape>
+ <home mod="longpress">playerdebug</home>
+ <leftbracket>info</leftbracket>
+ <i>info</i>
+ <leftbracket mod="longpress">playerprocessinfo</leftbracket>
+ <i mod="longpress">playerprocessinfo</i>
+ <return mod="longpress">Playlist</return>
+ <up mod="longpress">SkipNext</up>
+ <down mod="longpress">SkipPrevious</down>
+ <left mod="longpress">AudioDelay</left>
+ <right mod="longpress">subtitledelay</right>
+ <rightbracket>ActivateWindow(osdvideosettings)</rightbracket>
+ <c>ActivateWindow(osdvideosettings)</c>
+ <rightbracket mod="longpress">ActivateWindow(osdaudiosettings)</rightbracket>
+ <c mod="longpress">ActivateWindow(osdaudiosettings)</c>
+ <play_pause mod="longpress">showsubtitles</play_pause>
+ <p mod="longpress">showsubtitles</p>
+ <stop mod="longpress">ActivateWindow(osdsubtitlesettings)</stop>
+ <x mod="longpress">ActivateWindow(osdsubtitlesettings)</x>
+ </keyboard>
+ </FullscreenVideo>
+ <FullscreenGame>
+ <keyboard>
+ <leftbracket>info</leftbracket>
+ <i>info</i>
+ <leftbracket mod="longpress">playerprocessinfo</leftbracket>
+ <i mod="longpress">playerprocessinfo</i>
+ <rightbracket>OSD</rightbracket>
+ <c>OSD</c>
+ </keyboard>
+ </FullscreenGame>
+ <FullscreenInfo>
+ <keyboard>
+ <leftbracket>Back</leftbracket>
+ <i>Back</i>
+ <leftbracket mod="longpress">playerprocessinfo</leftbracket>
+ <i mod="longpress">playerprocessinfo</i>
+ <rightbracket>Back</rightbracket>
+ <c>Back</c>
+ </keyboard>
+ </FullscreenInfo>
+ <Visualisation>
+ <keyboard>
+ <leftbracket>info</leftbracket>
+ <i>info</i>
+ <leftbracket mod="longpress">playerprocessinfo</leftbracket>
+ <i mod="longpress">playerprocessinfo</i>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ <return mod="longpress">ActivateWindow(MusicPlaylist)</return>
+ <rightbracket>Addon.Default.OpenSettings(xbmc.player.musicviz)</rightbracket>
+ <c>Addon.Default.OpenSettings(xbmc.player.musicviz)</c>
+ <rightbracket mod="longpress">ActivateWindow(VisualisationPresetList)</rightbracket>
+ <c mod="longpress">ActivateWindow(VisualisationPresetList)</c>
+ <p/>
+ </keyboard>
+ </Visualisation>
+ <MusicOSD>
+ <keyboard>
+ <escape>back</escape>
+ <home>back</home>
+ <leftbracket>info</leftbracket>
+ <i>info</i>
+ <leftbracket mod="longpress">playerprocessinfo</leftbracket>
+ <i mod="longpress">playerprocessinfo</i>
+ <return mod="longpress">back</return>
+ <rightbracket>Addon.Default.OpenSettings(xbmc.player.musicviz)</rightbracket>
+ <c>Addon.Default.OpenSettings(xbmc.player.musicviz)</c>
+ <rightbracket mod="longpress">ActivateWindow(VisualisationPresetList)</rightbracket>
+ <c mod="longpress">ActivateWindow(VisualisationPresetList)</c>
+ <p/>
+ </keyboard>
+ </MusicOSD>
+ <VisualisationPresetList>
+ <keyboard>
+ <leftbracket>info</leftbracket>
+ <i>info</i>
+ <leftbracket mod="longpress">playerprocessinfo</leftbracket>
+ <i mod="longpress">playerprocessinfo</i>
+ <rightbracket>back</rightbracket>
+ <c>back</c>
+ <p/>
+ </keyboard>
+ </VisualisationPresetList>
+ <slideshow>
+ <keyboard>
+ <escape>back</escape>
+ <home>back</home>
+ <leftbracket>info</leftbracket>
+ <i>info</i>
+ <play_pause>pause</play_pause>
+ <p>pause</p>
+ <up mod="longpress">ZoomIn</up>
+ <down mod="longpress">ZoomOut</down>
+ <return mod="longpress">ZoomNormal</return>
+ <rightbracket></rightbracket> <!-- removes mapping from osmc-classic -->
+ </keyboard>
+ </slideshow>
+ <VideoOSD>
+ <keyboard>
+ <escape>ActivateWindow(videobookmarks)</escape>
+ <home>ActivateWindow(videobookmarks)</home>
+ <escape mod="longpress">playerdebug</escape>
+ <home mod="longpress">playerdebug</home>
+ <leftbracket>info</leftbracket>
+ <i>info</i>
+ <leftbracket mod="longpress">playerprocessinfo</leftbracket>
+ <i mod="longpress">playerprocessinfo</i>
+ <up mod="longpress">SkipNext</up>
+ <down mod="longpress">SkipPrevious</down>
+ <left mod="longpress">AudioDelay</left>
+ <right mod="longpress">subtitledelay</right>
+ <rightbracket>ActivateWindow(osdvideosettings)</rightbracket>
+ <return mod="longpress">back</return>
+ <c>ActivateWindow(osdvideosettings)</c>
+ <rightbracket mod="longpress">ActivateWindow(osdaudiosettings)</rightbracket>
+ <c mod="longpress">ActivateWindow(osdaudiosettings)</c>
+ <play_pause mod="longpress">showsubtitles</play_pause>
+ <p mod="longpress">showsubtitles</p>
+ <stop mod="longpress">ActivateWindow(osdsubtitlesettings)</stop>
+ <x mod="longpress">ActivateWindow(osdsubtitlesettings)</x>
+ </keyboard>
+ </VideoOSD>
+ <VideoMenu>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ <leftbracket>info</leftbracket>
+ <i>info</i>
+ <leftbracket mod="longpress">playerprocessinfo</leftbracket>
+ <i mod="longpress">playerprocessinfo</i>
+ <rightbracket></rightbracket> <!-- removes mapping from osmc-classic -->
+ </keyboard>
+ </VideoMenu>
+ <OSDVideoSettings>
+ <keyboard>
+ <leftbracket>info</leftbracket>
+ <i>info</i>
+ <leftbracket mod="longpress">playerprocessinfo</leftbracket>
+ <i mod="longpress">playerprocessinfo</i>
+ <rightbracket>back</rightbracket>
+ <c>back</c>
+ <stop>back</stop>
+ <x>back</x>
+ </keyboard>
+ </OSDVideoSettings>
+ <OSDAudioSettings>
+ <keyboard>
+ <leftbracket>info</leftbracket>
+ <i>info</i>
+ <leftbracket mod="longpress">playerprocessinfo</leftbracket>
+ <i mod="longpress">playerprocessinfo</i>
+ <rightbracket>back</rightbracket>
+ <c>back</c>
+ <stop>back</stop>
+ <x>back</x>
+ </keyboard>
+ </OSDAudioSettings>
+ <osdsubtitlesettings>
+ <keyboard>
+ <leftbracket>info</leftbracket>
+ <i>info</i>
+ <leftbracket mod="longpress">playerprocessinfo</leftbracket>
+ <i mod="longpress">playerprocessinfo</i>
+ <rightbracket>back</rightbracket>
+ <c>back</c>
+ <stop>back</stop>
+ <x>back</x>
+ </keyboard>
+ </osdsubtitlesettings>
+ <VideoBookmarks>
+ <keyboard>
+ <escape>back</escape>
+ <home>back</home>
+ <rightbracket mod="longpress">back</rightbracket>
+ <c mod="longpress">back</c>
+ </keyboard>
+ </VideoBookmarks>
+ <Videos>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ <return mod="longpress">SendClick(14)</return> <!-- Toggle view between unwatched and all videos -->
+ <play_pause mod="longpress">togglewatched</play_pause>
+ <p mod="longpress">togglewatched</p>
+ </keyboard>
+ </Videos>
+ <VideoPlaylist>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ <return mod="longpress">Back</return>
+ </keyboard>
+ </VideoPlaylist>
+ <ContextMenu>
+ <keyboard>
+ <rightbracket>Back</rightbracket>
+ <c>Back</c>
+ </keyboard>
+ </ContextMenu>
+ <MusicInformation>
+ <keyboard>
+ <escape>back</escape>
+ <home>back</home>
+ <leftbracket>Back</leftbracket>
+ <i>Back</i>
+ <leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
+ <i mod="longpress">noop</i> <!-- stops cycling -->
+ <rightbracket>Back</rightbracket>
+ <c>Back</c>
+ </keyboard>
+ </MusicInformation>
+ <MusicPlaylist>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ <return mod="longpress">back</return>
+ </keyboard>
+ </MusicPlaylist>
+ <SongInformation>
+ <keyboard>
+ <escape>back</escape>
+ <home>back</home>
+ <leftbracket>Back</leftbracket>
+ <i>Back</i>
+ <leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
+ <i mod="longpress">noop</i> <!-- stops cycling -->
+ <rightbracket>Back</rightbracket>
+ <c>Back</c>
+ </keyboard>
+ </SongInformation>
+ <MovieInformation>
+ <keyboard>
+ <escape>back</escape>
+ <home>back</home>
+ <leftbracket>Back</leftbracket>
+ <i>Back</i>
+ <leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
+ <i mod="longpress">noop</i> <!-- stops cycling -->
+ <rightbracket>Back</rightbracket>
+ <c>Back</c>
+ </keyboard>
+ </MovieInformation>
+ <PictureInfo>
+ <keyboard>
+ <escape>back</escape>
+ <home>back</home>
+ <leftbracket>Back</leftbracket>
+ <i>Back</i>
+ <leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
+ <i mod="longpress">noop</i> <!-- stops cycling -->
+ <rightbracket>Back</rightbracket>
+ <c>Back</c>
+ </keyboard>
+ </PictureInfo>
+ <FullscreenLiveTV>
+ <keyboard>
+ <rightbracket>ActivateWindow(PVROSDChannels)</rightbracket>
+ <c>ActivateWindow(PVROSDChannels)</c>
+ <leftbracket>info</leftbracket>
+ <i>info</i>
+ <leftbracket mod="longpress">playerprocessinfo</leftbracket>
+ <i mod="longpress">playerprocessinfo</i>
+ <left mod="longpress">AudioDelay</left>
+ <right mod="longpress">subtitledelay</right>
+ <return mod="longpress">Record</return>
+ <play_pause mod="longpress">showsubtitles</play_pause>
+ <p mod="longpress">showsubtitles</p>
+ <stop mod="longpress">ActivateWindow(Teletext)</stop>
+ <x mod="longpress">ActivateWindow(Teletext)</x>
+ </keyboard>
+ </FullscreenLiveTV>
+ <TVGuide>
+ <keyboard>
+ <return mod="longpress">Record</return>
+ </keyboard>
+ </TVGuide>
+ <FullscreenRadio>
+ <keyboard>
+ <rightbracket>ActivateWindow(PVROSDChannels)</rightbracket>
+ <c>ActivateWindow(PVROSDChannels)</c>
+ </keyboard>
+ </FullscreenRadio>
+ <AddonInformation>
+ <keyboard>
+ <escape>back</escape>
+ <home>back</home>
+ <leftbracket>Back</leftbracket>
+ <i>Back</i>
+ <leftbracket mod="longpress">noop</leftbracket> <!-- stops cycling -->
+ <i mod="longpress">noop</i> <!-- stops cycling -->
+ <rightbracket>Back</rightbracket>
+ <c>Back</c>
+ </keyboard>
+ </AddonInformation>
+ <PlayerProcessInfo>
+ <keyboard>
+ <leftbracket>back</leftbracket>
+ <i>back</i>
+ <rightbracket>ActivateWindow(osdvideosettings)</rightbracket>
+ <c>ActivateWindow(osdvideosettings)</c>
+ <rightbracket mod="longpress">noop</rightbracket>
+ <c mod="longpress">noop</c>
+ <stop mod="longpress">ActivateWindow(osdsubtitlesettings)</stop>
+ <x mod="longpress">ActivateWindow(osdsubtitlesettings)</x>
+ </keyboard>
+ </PlayerProcessInfo>
+ <yesnodialog> <!-- Added to allow CEC when update dialog box appears -->
+ <keyboard>
+ <escape>CECActivateSource</escape>
+ <home>CECActivateSource</home>
+ <escape mod="longpress">CECStandby</escape>
+ <home mod="longpress">CECStandby</home>
+ </keyboard>
+ </yesnodialog>
+ <selectdialog>
+ <keyboard>
+ <escape>back</escape>
+ <home>back</home>
+ </keyboard>
+ </selectdialog>
+ <contextmenu>
+ <keyboard>
+ <escape>back</escape>
+ <home>back</home>
+ </keyboard>
+ </contextmenu>
+ <addonsettings>
+ <keyboard>
+ <escape>back</escape>
+ <home>back</home>
+ </keyboard>
+ </addonsettings>
+ <addonbrowser>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </addonbrowser>
+ <filemanager>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </filemanager>
+ <interfacesettings>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </interfacesettings>
+ <systeminfo>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </systeminfo>
+ <eventlog>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </eventlog>
+ <playersettings>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </playersettings>
+ <mediasettings>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </mediasettings>
+ <pvrsettings>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </pvrsettings>
+ <servicesettings>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </servicesettings>
+ <gamesettings>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </gamesettings>
+ <profiles>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </profiles>
+ <systemsettings>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </systemsettings>
+ <music>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </music>
+ <pictures>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </pictures>
+ <skinsettings>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </skinsettings>
+ <musicplaylisteditor>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </musicplaylisteditor>
+ <games>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </games>
+ <programs>
+ <keyboard>
+ <escape>ActivateWindow(Home)</escape>
+ <home>ActivateWindow(Home)</home>
+ <escape mod="longpress">fullscreen</escape>
+ <home mod="longpress">fullscreen</home>
+ </keyboard>
+ </programs>
+ </keymap>
diff --git a/system/keymaps/remote.xml b/system/keymaps/remote.xml new file mode 100644 index 0000000..c122b99 --- /dev/null +++ b/system/keymaps/remote.xml @@ -0,0 +1,720 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This file contains the mapping of remote keys to actions within Kodi. --> +<!-- --> +<!-- The format is: --> +<!-- <window> --> +<!-- <device> --> +<!-- <button>action</button> --> +<!-- </device> --> +<!-- </window> --> +<!-- --> +<!-- The <global> section is a fall through - they will only be used if the button is --> +<!-- not used in the current window's section. --> +<!-- --> +<!-- Actions can be built-in functions. --> +<!-- eg <B>ActivateWindow(Music)</B> --> +<!-- would automatically go to Music on the press of the B button. --> +<!-- --> +<!-- An empty action removes the corresponding mapping from default and parent keymaps. --> +<!-- This is different from a "noop" action, which disables a button. --> +<!-- --> +<!-- More documentation on keymaps can be found on http://kodi.wiki/view/keymaps --> +<keymap> + <global> + <remote> + <play>PlayPause</play> + <pause>Pause</pause> + <stop>Stop</stop> + <forward>FastForward</forward> + <reverse>Rewind</reverse> + <left>Left</left> + <right>Right</right> + <up>Up</up> + <down>Down</down> + <select>Select</select> + <enter>FullScreen</enter> + <pageplus>PageUp</pageplus> + <pageminus>PageDown</pageminus> + <back>Back</back> + <menu>ContextMenu</menu> + <contentsmenu>PreviousMenu</contentsmenu> + <rootmenu>PreviousMenu</rootmenu> + <title>ContextMenu</title> + <info>Info</info> + <skipplus>SkipNext</skipplus> + <skipminus>SkipPrevious</skipminus> + <display>FullScreen</display> + <start>PreviousMenu</start> + <record>Record</record> + <eject>EjectTray()</eject> + <volumeplus>VolumeUp</volumeplus> + <volumeminus>VolumeDown</volumeminus> + <mute>Mute</mute> + <power>ShutDown()</power> + <myvideo>ActivateWindow(Videos)</myvideo> + <mymusic>ActivateWindow(Music)</mymusic> + <mypictures>ActivateWindow(Pictures)</mypictures> + <mytv>ActivateWindow(Videos,TvShows)</mytv> + <guide>ActivateWindow(TVGuide)</guide> + <livetv>ActivateWindow(TVChannels)</livetv> + <liveradio>ActivateWindow(RadioChannels)</liveradio> + <recordedtv>ActivateWindow(TVRecordings)</recordedtv> + <epgsearch>ActivateWindow(TVSearch)</epgsearch> + <red>ActivateWindow(TVChannels)</red> + <green>ActivateWindow(Videos)</green> + <yellow>ActivateWindow(Music)</yellow> + <blue>ActivateWindow(Pictures)</blue> + <zero>Number0</zero> + <one>Number1</one> + <two>JumpSMS2</two> + <three>JumpSMS3</three> + <four>JumpSMS4</four> + <five>JumpSMS5</five> + <six>JumpSMS6</six> + <seven>JumpSMS7</seven> + <eight>JumpSMS8</eight> + <nine>JumpSMS9</nine> + <print>Screenshot</print> + </remote> + </global> + <Home> + <remote> + <clear>ActivateWindow(Weather)</clear> + <hash>ActivateWindow(Settings)</hash> + </remote> + </Home> + <TVRecordings> + <remote> + <clear>Delete</clear> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </remote> + </TVRecordings> + <TVTimers> + <remote> + <clear>Delete</clear> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </remote> + </TVTimers> + <TVTimerRules> + <remote> + <clear>Delete</clear> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </remote> + </TVTimerRules> + <RadioRecordings> + <remote> + <clear>Delete</clear> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </remote> + </RadioRecordings> + <RadioTimers> + <remote> + <clear>Delete</clear> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </remote> + </RadioTimers> + <RadioTimerRules> + <remote> + <clear>Delete</clear> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </remote> + </RadioTimerRules> + <FileManager> + <remote> + <clear>Delete</clear> + <zero>Highlight</zero> + <star>Move</star> + <hash>Rename</hash> + </remote> + </FileManager> + <FileBrowser> + <remote> + <zero>Highlight</zero> + </remote> + </FileBrowser> + <MusicPlaylist> + <remote> + <clear>Delete</clear> + <zero>Delete</zero> + </remote> + </MusicPlaylist> + <MusicPlaylistEditor> + <remote> + <zero>Queue</zero> + </remote> + </MusicPlaylistEditor> + <Music> + <remote> + <zero>Queue</zero> + <star>Queue</star> + </remote> + </Music> + <Pictures> + <remote> + <clear>Delete</clear> + </remote> + </Pictures> + <FullscreenVideo> + <remote> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + <left>StepBack</left> + <right>StepForward</right> + <up>ChapterOrBigStepForward</up> + <down>ChapterOrBigStepBack</down> + <back>Back</back> + <menu>OSD</menu> + <contentsmenu>OSD</contentsmenu> + <rootmenu>OSD</rootmenu> + <start>OSD</start> + <select>OSD</select> + <title>PlayerProcessInfo</title> + <info>Info</info> + <guide>ActivateWindow(TVGuide)</guide> + <teletext>ActivateWindow(Teletext)</teletext> + <subtitle>NextSubtitle</subtitle> + <star>NextSubtitle</star> + <language>AudioNextLanguage</language> + <playlist>Playlist</playlist> + <hash>AudioNextLanguage</hash> + <pageplus>SkipNext</pageplus> + <pageminus>SkipPrevious</pageminus> + </remote> + </FullscreenVideo> + <FullscreenGame> + <remote> + <left>StepBack</left> + <right>StepForward</right> + <back>Back</back> + <menu>OSD</menu> + <contentsmenu>OSD</contentsmenu> + <rootmenu>OSD</rootmenu> + <start>OSD</start> + <select>OSD</select> + <title>CodecInfo</title> + <info>Info</info> + </remote> + </FullscreenGame> + <VideoTimeSeek> + <remote> + <select>Select</select> + <enter>Select</enter> + </remote> + </VideoTimeSeek> + <FullscreenInfo> + <remote> + <title>PlayerProcessInfo</title> + <info>Back</info> + <menu>OSD</menu> + <contentsmenu>OSD</contentsmenu> + <rootmenu>OSD</rootmenu> + </remote> + </FullscreenInfo> + <PlayerControls> + <remote> + <menu>Back</menu> + <contentsmenu>Back</contentsmenu> + <rootmenu>Back</rootmenu> + </remote> + </PlayerControls> + <Visualisation> + <remote> + <left>StepBack</left> + <right>StepForward</right> + <up>SkipNext</up> + <down>SkipPrevious</down> + <pageplus>IncreaseRating</pageplus> + <pageminus>DecreaseRating</pageminus> + <back>Back</back> + <title>PlayerProcessInfo</title> + <select>OSD</select> + <menu>OSD</menu> + <contentsmenu>OSD</contentsmenu> + <rootmenu>OSD</rootmenu> + <start>OSD</start> + <info>Info</info> + <guide>ActivateWindow(TVGuide)</guide> + <playlist>ActivateWindow(PVROSDChannels)</playlist> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + </remote> + </Visualisation> + <MusicOSD> + <remote> + <menu>Back</menu> + <contentsmenu>Back</contentsmenu> + <rootmenu>Back</rootmenu> + <title>Info</title> + <info>PlayerProcessInfo</info> + </remote> + </MusicOSD> + <VisualisationPresetList> + <remote> + <menu>Back</menu> + <contentsmenu>Back</contentsmenu> + <rootmenu>Back</rootmenu> + </remote> + </VisualisationPresetList> + <SlideShow> + <remote> + <zero>ZoomNormal</zero> + <one>ZoomLevel1</one> + <two>ZoomLevel2</two> + <three>ZoomLevel3</three> + <four>ZoomLevel4</four> + <five>ZoomLevel5</five> + <six>ZoomLevel6</six> + <seven>ZoomLevel7</seven> + <eight>ZoomLevel8</eight> + <nine>ZoomLevel9</nine> + <info>Info</info> + <skipplus>NextPicture</skipplus> + <skipminus>PreviousPicture</skipminus> + <title>Info</title> + <select>Rotate</select> + </remote> + </SlideShow> + <ScreenCalibration> + <remote> + <select>NextCalibration</select> + <zero>ResetCalibration</zero> + <display>NextResolution</display> + <xbox>NextResolution</xbox> + </remote> + </ScreenCalibration> + <ScreenCalibration> + <remote> + <select>NextCalibration</select> + <zero>ResetCalibration</zero> + </remote> + </ScreenCalibration> + <VideoOSD> + <remote> + <menu>Back</menu> + <contentsmenu>Back</contentsmenu> + <rootmenu>Back</rootmenu> + <start>Back</start> + </remote> + </VideoOSD> + <VideoMenu> + <remote> + <menu>OSD</menu> + <contentsmenu>OSD</contentsmenu> + <rootmenu>OSD</rootmenu> + <info>Info</info> + <title>PlayerProcessInfo</title> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + <play>Select</play> + <pageplus>SkipNext</pageplus> + <pageminus>SkipPrevious</pageminus> + </remote> + </VideoMenu> + <OSDVideoSettings> + <remote> + <menu>Back</menu> + <contentsmenu>Back</contentsmenu> + <rootmenu>Back</rootmenu> + <start>Back</start> + </remote> + </OSDVideoSettings> + <OSDAudioSettings> + <remote> + <menu>Back</menu> + <contentsmenu>Back</contentsmenu> + <rootmenu>Back</rootmenu> + <start>Back</start> + </remote> + </OSDAudioSettings> + <VideoBookmarks> + <remote> + <menu>Back</menu> + <contentsmenu>Back</contentsmenu> + <rootmenu>Back</rootmenu> + <start>Back</start> + <zero>Delete</zero> + </remote> + </VideoBookmarks> + <Videos> + <remote> + <zero>Queue</zero> + <clear>Delete</clear> + </remote> + </Videos> + <VideoPlaylist> + <remote> + <clear>Delete</clear> + <zero>Delete</zero> + </remote> + </VideoPlaylist> + <VirtualKeyboard> + <remote> + <back>Back</back> + <star>Shift</star> + <hash>Symbols</hash> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + <enter>Enter</enter> + <pageminus>CursorLeft</pageminus> + <pageplus>CursorRight</pageplus> + </remote> + </VirtualKeyboard> + <ContextMenu> + <remote> + <title>Back</title> + </remote> + </ContextMenu> + <Programs> + <remote> + <info>info</info> + </remote> + </Programs> + <NumericInput> + <remote> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + <enter>Enter</enter> + <back>Back</back> + </remote> + </NumericInput> + <Weather> + <remote> + <back>PreviousMenu</back> + </remote> + </Weather> + <Settings> + <remote> + <back>PreviousMenu</back> + </remote> + </Settings> + <AddonBrowser> + <remote> + </remote> + </AddonBrowser> + <AddonInformation> + <remote> + <back>Close</back> + </remote> + </AddonInformation> + <AddonSettings> + <remote> + <back>Close</back> + </remote> + </AddonSettings> + <TextViewer> + <remote> + <back>Close</back> + </remote> + </TextViewer> + <PlayerSettings> + <remote> + <back>PreviousMenu</back> + </remote> + </PlayerSettings> + <MediaSettings> + <remote> + <back>PreviousMenu</back> + </remote> + </MediaSettings> + <SystemSettings> + <remote> + <back>PreviousMenu</back> + </remote> + </SystemSettings> + <ServiceSettings> + <remote> + <back>PreviousMenu</back> + </remote> + </ServiceSettings> + <InterfaceSettings> + <remote> + <back>PreviousMenu</back> + </remote> + </InterfaceSettings> + <Profiles> + <remote> + <back>PreviousMenu</back> + </remote> + </Profiles> + <systeminfo> + <remote> + <back>PreviousMenu</back> + </remote> + </systeminfo> + <shutdownmenu> + <remote> + <back>PreviousMenu</back> + </remote> + </shutdownmenu> + <submenu> + <remote> + <back>PreviousMenu</back> + </remote> + </submenu> + <MusicInformation> + <remote> + <info>Back</info> + </remote> + </MusicInformation> + <MovieInformation> + <remote> + <info>Back</info> + </remote> + </MovieInformation> + <LockSettings> + <remote> + <menu>Back</menu> + <contentsmenu>Back</contentsmenu> + <rootmenu>Back</rootmenu> + </remote> + </LockSettings> + <ProfileSettings> + <remote> + <menu>Back</menu> + <contentsmenu>Back</contentsmenu> + <rootmenu>Back</rootmenu> + </remote> + </ProfileSettings> + <PictureInfo> + <remote> + <skipplus>NextPicture</skipplus> + <skipminus>PreviousPicture</skipminus> + <info>Back</info> + </remote> + </PictureInfo> + <Teletext> + <remote> + <zero>number0</zero> + <one>number1</one> + <two>number2</two> + <three>number3</three> + <four>number4</four> + <five>number5</five> + <six>number6</six> + <seven>number7</seven> + <eight>number8</eight> + <nine>number9</nine> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + <info>Info</info> + <menu>Back</menu> + <contentsmenu>Back</contentsmenu> + <rootmenu>Back</rootmenu> + <start>Back</start> + <teletext>Back</teletext> + </remote> + </Teletext> + <Favourites> + <remote> + <back>Close</back> + </remote> + </Favourites> + <FullscreenLiveTV> + <remote> + <left>StepBack</left> + <right>StepForward</right> + <up>Up</up> + <down>Down</down> + <pageplus>ChannelUp</pageplus> + <pageminus>ChannelDown</pageminus> + </remote> + </FullscreenLiveTV> + <FullscreenRadio> + <remote> + <left>StepBack</left> + <right>StepForward</right> + <up>Up</up> + <down>Down</down> + <pageplus>ChannelUp</pageplus> + <pageminus>ChannelDown</pageminus> + </remote> + </FullscreenRadio> + <FullscreenLiveTvPreview> + <remote> + <select>Select</select> + </remote> + </FullscreenLiveTvPreview> + <FullscreenRadioPreview> + <remote> + <select>Select</select> + </remote> + </FullscreenRadioPreview> + <FullscreenLiveTvInput> + <remote> + <select>Select</select> + </remote> + </FullscreenLiveTvInput> + <FullscreenRadioInput> + <remote> + <select>Select</select> + </remote> + </FullscreenRadioInput> + <PVROSDChannels> + <remote> + <back>Close</back> + <start>Close</start> + <playlist>Close</playlist> + <zero>Number0</zero> + <one>Number1</one> + <two>number2</two> + <three>number3</three> + <four>number4</four> + <five>number5</five> + <six>number6</six> + <seven>number7</seven> + <eight>number8</eight> + <nine>number9</nine> + </remote> + </PVROSDChannels> + <PVRChannelGuide> + <remote> + <back>Close</back> + <start>Close</start> + <guide>Close</guide> + <zero>Number0</zero> + <one>Number1</one> + <two>number2</two> + <three>number3</three> + <four>number4</four> + <five>number5</five> + <six>number6</six> + <seven>number7</seven> + <eight>number8</eight> + <nine>number9</nine> + </remote> + </PVRChannelGuide> + <TVChannels> + <remote> + <zero>Number0</zero> + <one>Number1</one> + <two>number2</two> + <three>number3</three> + <four>number4</four> + <five>number5</five> + <six>number6</six> + <seven>number7</seven> + <eight>number8</eight> + <nine>number9</nine> + </remote> + </TVChannels> + <TVGuide> + <remote> + <zero>Number0</zero> + <one>Number1</one> + <two>number2</two> + <three>number3</three> + <four>number4</four> + <five>number5</five> + <six>number6</six> + <seven>number7</seven> + <eight>number8</eight> + <nine>number9</nine> + </remote> + </TVGuide> + <RadioChannels> + <remote> + <zero>Number0</zero> + <one>Number1</one> + <two>number2</two> + <three>number3</three> + <four>number4</four> + <five>number5</five> + <six>number6</six> + <seven>number7</seven> + <eight>number8</eight> + <nine>number9</nine> + </remote> + </RadioChannels> + <RadioGuide> + <remote> + <zero>Number0</zero> + <one>Number1</one> + <two>number2</two> + <three>number3</three> + <four>number4</four> + <five>number5</five> + <six>number6</six> + <seven>number7</seven> + <eight>number8</eight> + <nine>number9</nine> + </remote> + </RadioGuide> + <PVRSettings> + <remote> + <back>PreviousMenu</back> + </remote> + </PVRSettings> + <Addon> + <remote> + <red>Red</red> + <green>Green</green> + <yellow>Yellow</yellow> + <blue>Blue</blue> + </remote> + </Addon> + <PlayerProcessInfo> + <remote> + <title>PlayerProcessInfo</title> + </remote> + </PlayerProcessInfo> +</keymap> diff --git a/system/keymaps/touchscreen.xml b/system/keymaps/touchscreen.xml new file mode 100644 index 0000000..56a42c8 --- /dev/null +++ b/system/keymaps/touchscreen.xml @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This file contains the mapping of touch gestures to actions within Kodi. --> +<!-- --> +<!-- The format is: --> +<!-- <window> --> +<!-- <device> --> +<!-- <gesture>action</gesture> --> +<!-- </device> --> +<!-- </window> --> +<!-- --> +<!-- The <global> section is a fall through - they will only be used if the button is --> +<!-- not used in the current window's section. --> +<!-- --> +<!-- Actions can be built-in functions. --> +<!-- eg <tap pointers="2">ActivateWindow(Music)</tap> --> +<!-- would automatically go to Music when two fingers tap the screen at once. --> +<!-- --> +<!-- --> +<!-- An empty action removes the corresponding mapping from default and parent keymaps. --> +<!-- This is different from a "noop" action, which disables a button. --> +<!-- --> +<!-- More documentation on keymaps can be found on http://kodi.wiki/view/keymaps --> +<keymap> + <global> + <touch> + <tap>LeftClick</tap> + <longpress>RightClick</longpress> + <tap pointers="2">RightClick</tap> + <pan>PanGesture</pan> + <swipe direction="left">SwipeLeft</swipe> + <swipe direction="left" pointers="2">Back</swipe> + <swipe direction="right">SwipeRight</swipe> + <swipe direction="right" pointers="2">Menu</swipe> <!-- Easier access to the side blade menu on touchscreens. --> + <swipe direction="up">SwipeUp</swipe> + <swipe direction="down">SwipeDown</swipe> + <swipe direction="up" pointers="3">SwitchPlayer</swipe> + <swipe direction="down" pointers="3">ActivateWindow(PlayerControls)</swipe> + </touch> + </global> + <FileManager> + <touch> + <tap>Select</tap> + <swipe direction="left">Highlight</swipe> + <swipe direction="right">Highlight</swipe> + </touch> + </FileManager> + <FullScreenVideo> + <touch> + <swipe direction="left">StepBack</swipe> + <swipe direction="right">StepForward</swipe> + <swipe direction="up">ChapterOrBigStepForward</swipe> + <swipe direction="down">ChapterOrBigStepBack</swipe> + <swipe direction="up" pointers="2">SkipNext</swipe> + <swipe direction="down" pointers="2">SkipPrevious</swipe> + <tap pointers="2">Playlist</tap> + <tap pointers="3">PlayPause</tap> + </touch> + </FullScreenVideo> + <FullScreenGame> + <touch> + <swipe direction="left">StepBack</swipe> + <swipe direction="right">StepForward</swipe> + <swipe direction="left" pointers="2">Seek(-7)</swipe> + <tap pointers="3">PlayPause</tap> + </touch> + </FullScreenGame> + <PlayerControls> + <touch> + <swipe direction="down" pointers="3">Back</swipe> + </touch> + </PlayerControls> + <Visualisation> + <touch> + <swipe direction="left">StepBack</swipe> + <swipe direction="right">StepForward</swipe> + <swipe direction="up">SkipNext</swipe> + <swipe direction="down">SkipPrevious</swipe> + <swipe direction="up" pointers="2">SkipNext</swipe> + <swipe direction="down" pointers="2">SkipPrevious</swipe> + <tap pointers="2">Playlist</tap> + <tap pointers="3">PlayPause</tap> + </touch> + </Visualisation> + <SlideShow> + <touch> + <zoom>ZoomGesture</zoom> + <rotate>RotateGesture</rotate> + <swipe direction="right" pointers="2">PreviousPicture</swipe> <!-- right/left are flipped here to make picture flipping feel more natural on touch screens. Two pointers are used in order to avoid conflicting with the panning gesture on zoomed-in images. --> + <swipe direction="left" pointers="2">NextPicture</swipe> + <tap pointers="2">Pause</tap> + <tap pointers="3">Info</tap> + <longpress>Back</longpress> + </touch> + </SlideShow> + <ScreenCalibration> + <touch> + <swipe direction="up">Up</swipe> + <swipe direction="down">Down</swipe> + <swipe direction="right">Right</swipe> + <swipe direction="left">Left</swipe> + <tap pointers="1">NextCalibration</tap> + </touch> + </ScreenCalibration> + <VideoMenu> + <touch> + <swipe direction="up" pointers="2">SkipNext</swipe> + <swipe direction="down" pointers="2">SkipPrevious</swipe> + </touch> + </VideoMenu> + <ContextMenu> + <touch> + <swipe direction="left" pointers="3">Back</swipe> <!-- backs out of "switch player" --> + <swipe direction="right" pointers="3">Back</swipe> + </touch> + </ContextMenu> + <PictureInfo> + <touch> + <tap pointers="3">Back</tap> + </touch> + </PictureInfo> + <FullScreenLiveTV> + <touch> + <swipe direction="up">Up</swipe> + <swipe direction="down">Down</swipe> + </touch> + </FullScreenLiveTV> + <FullScreenRadio> + <touch> + <swipe direction="up">ChannelUp</swipe> + <swipe direction="down">ChannelDown</swipe> + </touch> + </FullScreenRadio> +</keymap> diff --git a/system/keymaps/wetek-play/keyboard.xml b/system/keymaps/wetek-play/keyboard.xml new file mode 100644 index 0000000..2a8edc5 --- /dev/null +++ b/system/keymaps/wetek-play/keyboard.xml @@ -0,0 +1,275 @@ +<?xml version="1.0" encoding="UTF-8"?> +<keymap> + <Global> + <keyboard> + <play_pause>Playpause</play_pause> + <play_pause mod="longpress">Info</play_pause> + <f2>ActivateWindow(TVGuide)</f2> + <f3>ActivateWindow(Home)</f3> + <f4>ContextMenu</f4> + <f4 mod="longpress">Menu</f4> + <f6>Info</f6> + <f6 mod="longpress">Playpause</f6> + <f7>ContextMenu</f7> + <f7 mod="longpress">Menu</f7> + <f11>ShowSubtitles</f11> + <escape>Back</escape> + <escape mod="longpress">ActivateWindow(Home)</escape> + <zero>Number0</zero> + <one>Number1</one> + <two>JumpSMS2</two> + <three>JumpSMS3</three> + <four>JumpSMS4</four> + <five>JumpSMS5</five> + <six>JumpSMS6</six> + <seven>JumpSMS7</seven> + <eight>JumpSMS8</eight> + <nine>JumpSMS9</nine> + </keyboard> + </Global> + <Home> + <keyboard> + <backspace>ActivateWindow(FavouritesBrowser)</backspace> + <backspace mod="longpress">ActivateWindow(ShutdownMenu)</backspace> + <browser_back>ActivateWindow(FavouritesBrowser)</browser_back> + <browser_back mod="longpress">ActivateWindow(ShutdownMenu)</browser_back> + <escape>ActivateWindow(FavouritesBrowser)</escape> + <escape mod="longpress">ActivateWindow(ShutdownMenu)</escape> + </keyboard> + </Home> + <FullscreenVideo> + <keyboard> + <f4>Playlist</f4> + <f7>Playlist</f7> + <escape>Stop</escape> + <escape mod="longpress">Fullscreen</escape> + <backspace>Stop</backspace> + <backspace mod="longpress">Fullscreen</backspace> + <browser_back>Stop</browser_back> + <browser_back mod="longpress">Fullscreen</browser_back> + <return>PlayPause</return> + <return mod="longpress">OSD</return> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + <backspace mod="longpress">FullScreen</backspace> + <browser_back mod="longpress">FullScreen</browser_back> + <escape mod="longpress">FullScreen</escape> + <up mod="longpress">SkipNext</up> + <down mod="longpress">SkipPrevious</down> + <left mod="longpress">Rewind</left> + <right mod="longpress">FastForward</right> + </keyboard> + </FullscreenVideo> + <Visualisation> + <keyboard> + <f4>Playlist</f4> + <f7>Playlist</f7> + <return>PlayPause</return> + <return mod="longpress">OSD</return> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + <backspace mod="longpress">Stop</backspace> + <browser_back mod="longpress">Stop</browser_back> + <escape mod="longpress">Stop</escape> + </keyboard> + </Visualisation> + <VirtualKeyboard> + <keyboard> + <f1>Backspace</f1> + <f2>Shift</f2> + <f6>Enter</f6> + <play_pause>Enter</play_pause> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + <backspace>Backspace</backspace> + <browser_back>PreviousMenu</browser_back> + <escape>PreviousMenu</escape> + </keyboard> + </VirtualKeyboard> + <VideoMenu> + <keyboard> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + <return mod="longpress">OSD</return> + <enter mod="longpress">OSD</enter> + </keyboard> + </VideoMenu> + <NumericInput> + <keyboard> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + </keyboard> + </NumericInput> + <Teletext> + <keyboard> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + </keyboard> + </Teletext> + <VideoOSD> + <keyboard> + <return mod="longpress">Back</return> + <enter mod="longpress">Back</enter> + </keyboard> + </VideoOSD> + <ContextMenu> + <keyboard> + <f4>Back</f4> + <f7>Back</f7> + </keyboard> + </ContextMenu> + <PVROSDChannels> + <keyboard> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + <f4>Close</f4> + <f7>Close</f7> + </keyboard> + </PVROSDChannels> + <TVChannels> + <keyboard> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + </keyboard> + </TVChannels> + <PVRChannelGuide> + <keyboard> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + </keyboard> + </PVRChannelGuide> + <TVGuide> + <keyboard> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + </keyboard> + </TVGuide> + <RadioChannels> + <keyboard> + <zero>Number0</zero> + <one>Number1</one> + <two>Number2</two> + <three>Number3</three> + <four>Number4</four> + <five>Number5</five> + <six>Number6</six> + <seven>Number7</seven> + <eight>Number8</eight> + <nine>Number9</nine> + </keyboard> + </RadioChannels> + <FullscreenLiveTV> + <keyboard> + <return>OSD</return> + <enter>OSD</enter> + </keyboard> + </FullscreenLiveTV> + <FullscreenRadio> + <keyboard> + <return>OSD</return> + <enter>OSD</enter> + </keyboard> + </FullscreenRadio> + <SlideShow> + <keyboard> + <up>ZoomIn</up> + <down>ZoomOut</down> + <left>PreviousPicture</left> + <right>NextPicture</right> + <up mod="longpress">Up</up> <!-- Longpress on direction keys for panning when zoomed in --> + <down mod="longpress">Down</down> + <left mod="longpress">Left</left> + <right mod="longpress">Right</right> + <backspace>Stop</backspace> + <browser_back>Stop</browser_back> + <return mod="longpress">Info</return> + <enter mod="longpress">Info</enter> + </keyboard> + </SlideShow> + <FileManager> + <keyboard> + <right mod="longpress">Highlight</right> + <left mod="longpress">Highlight</left> + </keyboard> + </FileManager> +</keymap> diff --git a/system/library/music/addons.xml b/system/library/music/addons.xml new file mode 100644 index 0000000..2514d23 --- /dev/null +++ b/system/library/music/addons.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="150" type="folder"> + <label>1038</label> + <icon>DefaultAddonMusic.png</icon> + <path>addons://sources/audio/</path> +</node> diff --git a/system/library/music/albums.xml b/system/library/music/albums.xml new file mode 100644 index 0000000..4c0e8d6 --- /dev/null +++ b/system/library/music/albums.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="30" type="filter" visible="Library.HasContent(Music)"> + <label>132</label> + <icon>DefaultMusicAlbums.png</icon> + <content>albums</content> +</node> diff --git a/system/library/music/artists.xml b/system/library/music/artists.xml new file mode 100644 index 0000000..9372593 --- /dev/null +++ b/system/library/music/artists.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="20" type="filter" visible="Library.HasContent(Music)"> + <label>133</label> + <icon>DefaultMusicArtists.png</icon> + <content>artists</content> +</node> diff --git a/system/library/music/boxsets.xml b/system/library/music/boxsets.xml new file mode 100644 index 0000000..e7f36e2 --- /dev/null +++ b/system/library/music/boxsets.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="99" type="folder" visible="Library.HasContent(Boxsets)"> + <label>38074</label> + <icon>DefaultSets.png</icon> + <path>musicdb://albums/?boxset=true</path> +</node> diff --git a/system/library/music/compilations.xml b/system/library/music/compilations.xml new file mode 100644 index 0000000..8e9879a --- /dev/null +++ b/system/library/music/compilations.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="100" type="folder" visible="Library.HasContent(Compilations)"> + <label>521</label> + <icon>DefaultMusicCompilations.png</icon> + <path>musicdb://albums/?compilation=true</path> +</node> diff --git a/system/library/music/files.xml b/system/library/music/files.xml new file mode 100644 index 0000000..cb8f799 --- /dev/null +++ b/system/library/music/files.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="140" type="folder"> + <label>744</label> + <icon>DefaultFolder.png</icon> + <path>sources://music/</path> +</node> diff --git a/system/library/music/genres.xml b/system/library/music/genres.xml new file mode 100644 index 0000000..e5eb7e4 --- /dev/null +++ b/system/library/music/genres.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="10" type="filter" visible="Library.HasContent(Music)"> + <label>135</label> + <icon>DefaultMusicGenres.png</icon> + <content>artists</content> + <group>genres</group> +</node> diff --git a/system/library/music/musicroles/albumartists.xml b/system/library/music/musicroles/albumartists.xml new file mode 100644 index 0000000..3a3b076 --- /dev/null +++ b/system/library/music/musicroles/albumartists.xml @@ -0,0 +1,6 @@ +<?xml version='1.0' encoding='UTF-8'?> +<node order="80" type="folder"> + <label>38043</label> + <icon>DefaultMusicArtists.png</icon> + <path>musicdb://artists/?albumartistsonly=true</path> +</node> diff --git a/system/library/music/musicroles/allartists.xml b/system/library/music/musicroles/allartists.xml new file mode 100644 index 0000000..22beac1 --- /dev/null +++ b/system/library/music/musicroles/allartists.xml @@ -0,0 +1,6 @@ +<?xml version='1.0' encoding='UTF-8'?> +<node order="90" type="folder"> + <label>38044</label> + <icon>DefaultMusicArtists.png</icon> + <path>musicdb://artists/?albumartistsonly=false</path> +</node> diff --git a/system/library/music/musicroles/allcontributors.xml b/system/library/music/musicroles/allcontributors.xml new file mode 100644 index 0000000..7eaad39 --- /dev/null +++ b/system/library/music/musicroles/allcontributors.xml @@ -0,0 +1,6 @@ +<?xml version='1.0' encoding='UTF-8'?> +<node order="100" type="folder"> + <label>38045</label> + <icon>DefaultMusicArtists.png</icon> + <path>musicdb://artists/?roleid=-1000&albumartistsonly=false</path> +</node> diff --git a/system/library/music/musicroles/allroles.xml b/system/library/music/musicroles/allroles.xml new file mode 100644 index 0000000..19f5840 --- /dev/null +++ b/system/library/music/musicroles/allroles.xml @@ -0,0 +1,6 @@ +<?xml version='1.0' encoding='UTF-8'?> +<node order="110" type="folder"> + <label>38046</label> + <icon>DefaultMusicRoles.png</icon> + <path>musicdb://roles/?albumartistsonly=false</path> +</node> diff --git a/system/library/music/musicroles/arrangers.xml b/system/library/music/musicroles/arrangers.xml new file mode 100644 index 0000000..09d43e6 --- /dev/null +++ b/system/library/music/musicroles/arrangers.xml @@ -0,0 +1,6 @@ +<?xml version='1.0' encoding='UTF-8'?> +<node order="50" type="folder" visible="Library.HasContent(Role, Arranger)"> + <label>29988</label> + <icon>DefaultMusicGenres.png</icon> + <path>musicdb://artists/?role=Arranger&albumartistsonly=false</path> +</node> diff --git a/system/library/music/musicroles/composers.xml b/system/library/music/musicroles/composers.xml new file mode 100644 index 0000000..752be53 --- /dev/null +++ b/system/library/music/musicroles/composers.xml @@ -0,0 +1,6 @@ +<?xml version='1.0' encoding='UTF-8'?> +<node order="10" type="folder" visible="Library.HasContent(Role, Composer)"> + <label>29989</label> + <icon>DefaultMusicGenres.png</icon> + <path>musicdb://artists/?role=Composer&albumartistsonly=false</path> +</node> diff --git a/system/library/music/musicroles/conductors.xml b/system/library/music/musicroles/conductors.xml new file mode 100644 index 0000000..67fac18 --- /dev/null +++ b/system/library/music/musicroles/conductors.xml @@ -0,0 +1,6 @@ +<?xml version='1.0' encoding='UTF-8'?> +<node order="20" type="folder" visible="Library.HasContent(Role, Conductor)"> + <label>29990</label> + <icon>DefaultMusicGenres.png</icon> + <path>musicdb://artists/?role=Conductor&albumartistsonly=false</path> +</node> diff --git a/system/library/music/musicroles/djmixers.xml b/system/library/music/musicroles/djmixers.xml new file mode 100644 index 0000000..b58d36d --- /dev/null +++ b/system/library/music/musicroles/djmixers.xml @@ -0,0 +1,6 @@ +<?xml version='1.0' encoding='UTF-8'?> +<node order="60" type="folder" visible="Library.HasContent(Role, DJMixer)"> + <label>29991</label> + <icon>DefaultMusicGenres.png</icon> + <path>musicdb://artists/?role=DJMixer&albumartistsonly=false</path> +</node> diff --git a/system/library/music/musicroles/index.xml b/system/library/music/musicroles/index.xml new file mode 100644 index 0000000..e13b3df --- /dev/null +++ b/system/library/music/musicroles/index.xml @@ -0,0 +1,5 @@ +<?xml version='1.0' encoding='UTF-8'?> +<node order="130" type="folder" visible="Library.HasContent(Music)"> + <label>29994</label> + <icon>DefaultMusicRoles.png</icon> +</node> diff --git a/system/library/music/musicroles/lyricists.xml b/system/library/music/musicroles/lyricists.xml new file mode 100644 index 0000000..b821adc --- /dev/null +++ b/system/library/music/musicroles/lyricists.xml @@ -0,0 +1,6 @@ +<?xml version='1.0' encoding='UTF-8'?> +<node order="40" type="folder" visible="Library.HasContent(Role, Lyricist)"> + <label>29992</label> + <icon>DefaultMusicGenres.png</icon> + <path>musicdb://artists/?role=Lyricist&albumartistsonly=false</path> +</node> diff --git a/system/library/music/musicroles/orchestras.xml b/system/library/music/musicroles/orchestras.xml new file mode 100644 index 0000000..a7fe0fa --- /dev/null +++ b/system/library/music/musicroles/orchestras.xml @@ -0,0 +1,6 @@ +<?xml version='1.0' encoding='UTF-8'?> +<node order="30" type="folder" visible="Library.HasContent(Role, Orchestra)"> + <label>29993</label> + <icon>DefaultMusicGenres.png</icon> + <path>musicdb://artists/?role=Orchestra&albumartistsonly=false</path> +</node> diff --git a/system/library/music/musicroles/remixers.xml b/system/library/music/musicroles/remixers.xml new file mode 100644 index 0000000..b42003a --- /dev/null +++ b/system/library/music/musicroles/remixers.xml @@ -0,0 +1,6 @@ +<?xml version='1.0' encoding='UTF-8'?> +<node order="70" type="folder" visible="Library.HasContent(Role, Remixer)"> + <label>29987</label> + <icon>DefaultMusicGenres.png</icon> + <path>musicdb://artists/?role=Remixer&albumartistsonly=false</path> +</node> diff --git a/system/library/music/musicvideos/albums.xml b/system/library/music/musicvideos/albums.xml new file mode 100644 index 0000000..1a5800f --- /dev/null +++ b/system/library/music/musicvideos/albums.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="50" type="filter"> + <label>132</label> + <icon>DefaultMusicAlbums.png</icon> + <content>musicvideos</content> + <group>albums</group> +</node> diff --git a/system/library/music/musicvideos/artists.xml b/system/library/music/musicvideos/artists.xml new file mode 100644 index 0000000..4a1697f --- /dev/null +++ b/system/library/music/musicvideos/artists.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="40" type="filter"> + <label>133</label> + <icon>DefaultMusicArtists.png</icon> + <content>musicvideos</content> + <group>artists</group> +</node> diff --git a/system/library/music/musicvideos/directors.xml b/system/library/music/musicvideos/directors.xml new file mode 100644 index 0000000..2c8c005 --- /dev/null +++ b/system/library/music/musicvideos/directors.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="60" type="filter"> + <label>20348</label> + <icon>DefaultDirector.png</icon> + <content>musicvideos</content> + <group>directors</group> +</node> diff --git a/system/library/music/musicvideos/genres.xml b/system/library/music/musicvideos/genres.xml new file mode 100644 index 0000000..597be8e --- /dev/null +++ b/system/library/music/musicvideos/genres.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="10" type="filter"> + <label>135</label> + <icon>DefaultGenre.png</icon> + <content>musicvideos</content> + <group>genres</group> +</node> diff --git a/system/library/music/musicvideos/index.xml b/system/library/music/musicvideos/index.xml new file mode 100644 index 0000000..bca6360 --- /dev/null +++ b/system/library/music/musicvideos/index.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="110" visible="Library.HasContent(MusicVideos)"> + <label>20389</label> + <icon>DefaultMusicVideos.png</icon> +</node> diff --git a/system/library/music/musicvideos/studios.xml b/system/library/music/musicvideos/studios.xml new file mode 100644 index 0000000..83b9bb1 --- /dev/null +++ b/system/library/music/musicvideos/studios.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="70" type="filter"> + <label>20388</label> + <icon>DefaultStudios.png</icon> + <content>musicvideos</content> + <group>studios</group> +</node> diff --git a/system/library/music/musicvideos/tags.xml b/system/library/music/musicvideos/tags.xml new file mode 100644 index 0000000..a53de4c --- /dev/null +++ b/system/library/music/musicvideos/tags.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="80" type="filter"> + <label>20459</label> + <icon>DefaultTags.png</icon> + <content>musicvideos</content> + <group>tags</group> +</node> diff --git a/system/library/music/musicvideos/titles.xml b/system/library/music/musicvideos/titles.xml new file mode 100644 index 0000000..6d57aed --- /dev/null +++ b/system/library/music/musicvideos/titles.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="20" type="filter"> + <label>10024</label> + <icon>DefaultMusicVideoTitle.png</icon> + <content>musicvideos</content> + <order direction="ascending">title</order> +</node> diff --git a/system/library/music/musicvideos/years.xml b/system/library/music/musicvideos/years.xml new file mode 100644 index 0000000..61348da --- /dev/null +++ b/system/library/music/musicvideos/years.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="30" type="filter"> + <label>652</label> + <icon>DefaultYear.png</icon> + <content>musicvideos</content> + <group>years</group> +</node> diff --git a/system/library/music/playlists.xml b/system/library/music/playlists.xml new file mode 100644 index 0000000..751abc5 --- /dev/null +++ b/system/library/music/playlists.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="120" type="folder"> + <label>136</label> + <icon>DefaultMusicPlaylists.png</icon> + <path>special://musicplaylists/</path> +</node> diff --git a/system/library/music/recentlyaddedalbums.xml b/system/library/music/recentlyaddedalbums.xml new file mode 100644 index 0000000..c17bdda --- /dev/null +++ b/system/library/music/recentlyaddedalbums.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="80" type="folder" visible="Library.HasContent(Music)"> + <label>359</label> + <icon>DefaultMusicRecentlyAdded.png</icon> + <path>musicdb://recentlyaddedalbums/</path> +</node> diff --git a/system/library/music/recentlyplayedalbums.xml b/system/library/music/recentlyplayedalbums.xml new file mode 100644 index 0000000..0359e2d --- /dev/null +++ b/system/library/music/recentlyplayedalbums.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="90" type="folder" visible="Library.HasContent(Music)"> + <label>517</label> + <icon>DefaultMusicRecentlyPlayed.png</icon> + <path>musicdb://recentlyplayedalbums/</path> +</node> diff --git a/system/library/music/singles.xml b/system/library/music/singles.xml new file mode 100644 index 0000000..aa99bcc --- /dev/null +++ b/system/library/music/singles.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="40" type="folder" visible="Library.HasContent(Singles)"> + <label>1050</label> + <icon>DefaultMusicSongs.png</icon> + <path>musicdb://singles/</path> +</node> diff --git a/system/library/music/songs.xml b/system/library/music/songs.xml new file mode 100644 index 0000000..2f3d23f --- /dev/null +++ b/system/library/music/songs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="50" type="filter" visible="Library.HasContent(Music)"> + <label>134</label> + <icon>DefaultMusicSongs.png</icon> + <content>songs</content> +</node> diff --git a/system/library/music/sources.xml b/system/library/music/sources.xml new file mode 100644 index 0000000..49ff0d6 --- /dev/null +++ b/system/library/music/sources.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="135" type="folder"> + <label>39031</label> + <icon>DefaultMusicSources.png</icon> + <path>musicdb://sources</path> +</node> diff --git a/system/library/music/top100/index.xml b/system/library/music/top100/index.xml new file mode 100644 index 0000000..b8737a2 --- /dev/null +++ b/system/library/music/top100/index.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="70" type="folder" visible="Library.HasContent(Music)"> + <label>271</label> + <icon>DefaultMusicTop100.png</icon> +</node> diff --git a/system/library/music/top100/top100albums.xml b/system/library/music/top100/top100albums.xml new file mode 100644 index 0000000..36d69db --- /dev/null +++ b/system/library/music/top100/top100albums.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="20" type="filter"> + <label>10505</label> + <icon>DefaultMusicTop100Albums.png</icon> + <content>albums</content> + <match>all</match> + <rule field="playcount" operator="greaterthan"> + <value>0</value> + </rule> + <limit>100</limit> + <order direction="descending">playcount</order> +</node> diff --git a/system/library/music/top100/top100songs.xml b/system/library/music/top100/top100songs.xml new file mode 100644 index 0000000..c5aba9a --- /dev/null +++ b/system/library/music/top100/top100songs.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="10" type="filter"> + <label>10504</label> + <icon>DefaultMusicTop100Songs.png</icon> + <content>songs</content> + <match>all</match> + <rule field="playcount" operator="greaterthan"> + <value>0</value> + </rule> + <limit>100</limit> + <order direction="descending">playcount</order> +</node> diff --git a/system/library/music/years.xml b/system/library/music/years.xml new file mode 100644 index 0000000..55016ad --- /dev/null +++ b/system/library/music/years.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="60" type="filter" visible="Library.HasContent(Music)"> + <label>652</label> + <icon>DefaultMusicYears.png</icon> + <content>albums</content> + <group>years</group> +</node> diff --git a/system/library/video/addons.xml b/system/library/video/addons.xml new file mode 100644 index 0000000..5d3fb42 --- /dev/null +++ b/system/library/video/addons.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="60" type="folder"> + <label>1037</label> + <icon>DefaultAddonVideo.png</icon> + <path>addons://sources/video/</path> +</node> diff --git a/system/library/video/files.xml b/system/library/video/files.xml new file mode 100644 index 0000000..398fd53 --- /dev/null +++ b/system/library/video/files.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="40" type="folder"> + <label>744</label> + <icon>DefaultFolder.png</icon> + <path>sources://video/</path> +</node> diff --git a/system/library/video/movies/actors.xml b/system/library/video/movies/actors.xml new file mode 100644 index 0000000..d07f08b --- /dev/null +++ b/system/library/video/movies/actors.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="50" type="filter"> + <label>344</label> + <icon>DefaultActor.png</icon> + <content>movies</content> + <group>actors</group> +</node> + diff --git a/system/library/video/movies/country.xml b/system/library/video/movies/country.xml new file mode 100644 index 0000000..55014fb --- /dev/null +++ b/system/library/video/movies/country.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="90" type="filter"> + <label>20451</label> + <icon>DefaultCountry.png</icon> + <content>movies</content> + <group>countries</group> +</node> diff --git a/system/library/video/movies/directors.xml b/system/library/video/movies/directors.xml new file mode 100644 index 0000000..88c739a --- /dev/null +++ b/system/library/video/movies/directors.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="60" type="filter"> + <label>20348</label> + <icon>DefaultDirector.png</icon> + <content>movies</content> + <group>directors</group> +</node> diff --git a/system/library/video/movies/genres.xml b/system/library/video/movies/genres.xml new file mode 100644 index 0000000..1baa40e --- /dev/null +++ b/system/library/video/movies/genres.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="20" type="filter"> + <label>135</label> + <icon>DefaultGenre.png</icon> + <content>movies</content> + <group>genres</group> +</node> diff --git a/system/library/video/movies/index.xml b/system/library/video/movies/index.xml new file mode 100644 index 0000000..d7083e7 --- /dev/null +++ b/system/library/video/movies/index.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="10" visible="Library.HasContent(Movies)"> + <label>342</label> + <icon>DefaultMovies.png</icon> +</node> diff --git a/system/library/video/movies/recentlyaddedmovies.xml b/system/library/video/movies/recentlyaddedmovies.xml new file mode 100644 index 0000000..14aa8f0 --- /dev/null +++ b/system/library/video/movies/recentlyaddedmovies.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="10" type="folder"> + <label>20382</label> + <icon>DefaultRecentlyAddedMovies.png</icon> + <path>videodb://recentlyaddedmovies/</path> +</node> diff --git a/system/library/video/movies/sets.xml b/system/library/video/movies/sets.xml new file mode 100644 index 0000000..8e0a678 --- /dev/null +++ b/system/library/video/movies/sets.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="80" type="filter" visible="Library.HasContent(MovieSets)"> + <label>20434</label> + <icon>DefaultSets.png</icon> + <content>movies</content> + <group>sets</group> +</node> diff --git a/system/library/video/movies/studios.xml b/system/library/video/movies/studios.xml new file mode 100644 index 0000000..da414a8 --- /dev/null +++ b/system/library/video/movies/studios.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="70" type="filter"> + <label>20388</label> + <icon>DefaultStudios.png</icon> + <content>movies</content> + <group>studios</group> +</node> diff --git a/system/library/video/movies/tags.xml b/system/library/video/movies/tags.xml new file mode 100644 index 0000000..7ff906d --- /dev/null +++ b/system/library/video/movies/tags.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="100" type="filter"> + <label>20459</label> + <icon>DefaultTags.png</icon> + <content>movies</content> + <group>tags</group> +</node> diff --git a/system/library/video/movies/titles.xml b/system/library/video/movies/titles.xml new file mode 100644 index 0000000..4f668eb --- /dev/null +++ b/system/library/video/movies/titles.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="30" type="filter"> + <label>10024</label> + <icon>DefaultMovieTitle.png</icon> + <content>movies</content> + <order direction="ascending">sorttitle</order> +</node> diff --git a/system/library/video/movies/years.xml b/system/library/video/movies/years.xml new file mode 100644 index 0000000..1df7e69 --- /dev/null +++ b/system/library/video/movies/years.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="40" type="filter"> + <label>652</label> + <icon>DefaultYear.png</icon> + <content>movies</content> + <group>years</group> +</node> diff --git a/system/library/video/musicvideos/albums.xml b/system/library/video/musicvideos/albums.xml new file mode 100644 index 0000000..9432641 --- /dev/null +++ b/system/library/video/musicvideos/albums.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="60" type="filter"> + <label>132</label> + <icon>DefaultMusicAlbums.png</icon> + <content>musicvideos</content> + <group>albums</group> +</node> diff --git a/system/library/video/musicvideos/artists.xml b/system/library/video/musicvideos/artists.xml new file mode 100644 index 0000000..24dbcb6 --- /dev/null +++ b/system/library/video/musicvideos/artists.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="50" type="filter"> + <label>133</label> + <icon>DefaultMusicArtists.png</icon> + <content>musicvideos</content> + <group>artists</group> +</node> diff --git a/system/library/video/musicvideos/directors.xml b/system/library/video/musicvideos/directors.xml new file mode 100644 index 0000000..7a6f55c --- /dev/null +++ b/system/library/video/musicvideos/directors.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="70" type="filter"> + <label>20348</label> + <icon>DefaultDirector.png</icon> + <content>musicvideos</content> + <group>directors</group> +</node> diff --git a/system/library/video/musicvideos/genres.xml b/system/library/video/musicvideos/genres.xml new file mode 100644 index 0000000..cf5b6b0 --- /dev/null +++ b/system/library/video/musicvideos/genres.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="20" type="filter"> + <label>135</label> + <icon>DefaultGenre.png</icon> + <content>musicvideos</content> + <group>genres</group> +</node> diff --git a/system/library/video/musicvideos/index.xml b/system/library/video/musicvideos/index.xml new file mode 100644 index 0000000..9526eea --- /dev/null +++ b/system/library/video/musicvideos/index.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="30" visible="Library.HasContent(MusicVideos)"> + <label>20389</label> + <icon>DefaultMusicVideos.png</icon> +</node> diff --git a/system/library/video/musicvideos/recentlyaddedmusicvideos.xml b/system/library/video/musicvideos/recentlyaddedmusicvideos.xml new file mode 100644 index 0000000..39b5177 --- /dev/null +++ b/system/library/video/musicvideos/recentlyaddedmusicvideos.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="10" type="folder"> + <label>20382</label> + <icon>DefaultRecentlyAddedMusicVideos.png</icon> + <path>videodb://recentlyaddedmusicvideos/</path> +</node> diff --git a/system/library/video/musicvideos/studios.xml b/system/library/video/musicvideos/studios.xml new file mode 100644 index 0000000..3729dfe --- /dev/null +++ b/system/library/video/musicvideos/studios.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="80" type="filter"> + <label>20388</label> + <icon>DefaultStudios.png</icon> + <content>musicvideos</content> + <group>studios</group> +</node> diff --git a/system/library/video/musicvideos/tags.xml b/system/library/video/musicvideos/tags.xml new file mode 100644 index 0000000..93b1b27 --- /dev/null +++ b/system/library/video/musicvideos/tags.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="90" type="filter"> + <label>20459</label> + <icon>DefaultTags.png</icon> + <content>musicvideos</content> + <group>tags</group> +</node> diff --git a/system/library/video/musicvideos/titles.xml b/system/library/video/musicvideos/titles.xml new file mode 100644 index 0000000..1eee37d --- /dev/null +++ b/system/library/video/musicvideos/titles.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="30" type="filter"> + <label>10024</label> + <icon>DefaultMusicVideoTitle.png</icon> + <content>musicvideos</content> + <order direction="ascending">title</order> +</node> diff --git a/system/library/video/musicvideos/years.xml b/system/library/video/musicvideos/years.xml new file mode 100644 index 0000000..a39d3bc --- /dev/null +++ b/system/library/video/musicvideos/years.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="40" type="filter"> + <label>652</label> + <icon>DefaultYear.png</icon> + <content>musicvideos</content> + <group>years</group> +</node> diff --git a/system/library/video/playlists.xml b/system/library/video/playlists.xml new file mode 100644 index 0000000..a65012f --- /dev/null +++ b/system/library/video/playlists.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="50" type="folder"> + <label>136</label> + <icon>DefaultVideoPlaylists.png</icon> + <path>special://videoplaylists/</path> +</node> diff --git a/system/library/video/tvshows/actors.xml b/system/library/video/tvshows/actors.xml new file mode 100644 index 0000000..c3f78cd --- /dev/null +++ b/system/library/video/tvshows/actors.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="60" type="filter"> + <label>344</label> + <icon>DefaultActor.png</icon> + <content>tvshows</content> + <group>actors</group> +</node> diff --git a/system/library/video/tvshows/genres.xml b/system/library/video/tvshows/genres.xml new file mode 100644 index 0000000..bb6eb5e --- /dev/null +++ b/system/library/video/tvshows/genres.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="30" type="filter"> + <label>135</label> + <icon>DefaultGenre.png</icon> + <content>tvshows</content> + <group>genres</group> +</node> diff --git a/system/library/video/tvshows/index.xml b/system/library/video/tvshows/index.xml new file mode 100644 index 0000000..e5848dc --- /dev/null +++ b/system/library/video/tvshows/index.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="20" visible="Library.HasContent(TVShows)"> + <label>20343</label> + <icon>DefaultTVShows.png</icon> +</node> diff --git a/system/library/video/tvshows/inprogressshows.xml b/system/library/video/tvshows/inprogressshows.xml new file mode 100644 index 0000000..3c0797e --- /dev/null +++ b/system/library/video/tvshows/inprogressshows.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="20" type="folder"> + <label>575</label> + <icon>DefaultInProgressShows.png</icon> + <path>videodb://inprogresstvshows/</path> +</node> diff --git a/system/library/video/tvshows/recentlyaddedepisodes.xml b/system/library/video/tvshows/recentlyaddedepisodes.xml new file mode 100644 index 0000000..6ea98f6 --- /dev/null +++ b/system/library/video/tvshows/recentlyaddedepisodes.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="10" type="folder"> + <label>20382</label> + <icon>DefaultRecentlyAddedEpisodes.png</icon> + <path>videodb://recentlyaddedepisodes/</path> +</node> diff --git a/system/library/video/tvshows/studios.xml b/system/library/video/tvshows/studios.xml new file mode 100644 index 0000000..1a99f69 --- /dev/null +++ b/system/library/video/tvshows/studios.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="70" type="filter"> + <label>20388</label> + <icon>DefaultStudios.png</icon> + <content>tvshows</content> + <group>studios</group> +</node> diff --git a/system/library/video/tvshows/tags.xml b/system/library/video/tvshows/tags.xml new file mode 100644 index 0000000..9be3a70 --- /dev/null +++ b/system/library/video/tvshows/tags.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="80" type="filter"> + <label>20459</label> + <icon>DefaultTags.png</icon> + <content>tvshows</content> + <group>tags</group> +</node> diff --git a/system/library/video/tvshows/titles.xml b/system/library/video/tvshows/titles.xml new file mode 100644 index 0000000..d5326fe --- /dev/null +++ b/system/library/video/tvshows/titles.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="40" type="filter"> + <label>10024</label> + <icon>DefaultTVShowTitle.png</icon> + <content>tvshows</content> + <order direction="ascending">sorttitle</order> +</node> diff --git a/system/library/video/tvshows/years.xml b/system/library/video/tvshows/years.xml new file mode 100644 index 0000000..4e41685 --- /dev/null +++ b/system/library/video/tvshows/years.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="50" type="filter"> + <label>652</label> + <icon>DefaultYear.png</icon> + <content>tvshows</content> + <group>years</group> +</node> diff --git a/system/library/video_flat/addons.xml b/system/library/video_flat/addons.xml new file mode 100644 index 0000000..a34eb27 --- /dev/null +++ b/system/library/video_flat/addons.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="100" type="folder"> + <label>1037</label> + <icon>DefaultAddonVideo.png</icon> + <path>addons://sources/video/</path> +</node> diff --git a/system/library/video_flat/files.xml b/system/library/video_flat/files.xml new file mode 100644 index 0000000..4fd56c0 --- /dev/null +++ b/system/library/video_flat/files.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="80" type="folder"> + <label>744</label> + <icon>DefaultFolder.png</icon> + <path>sources://video/</path> +</node> diff --git a/system/library/video_flat/inprogressshows.xml b/system/library/video_flat/inprogressshows.xml new file mode 100644 index 0000000..dface4d --- /dev/null +++ b/system/library/video_flat/inprogressshows.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="40" type="folder" visible="Library.HasContent(TVShows)"> + <label>626</label> + <icon>DefaultInProgressShows.png</icon> + <path>videodb://inprogresstvshows/</path> +</node> diff --git a/system/library/video_flat/movies.xml b/system/library/video_flat/movies.xml new file mode 100644 index 0000000..1e1720c --- /dev/null +++ b/system/library/video_flat/movies.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="10" type="filter" visible="Library.HasContent(Movies)"> + <label>342</label> + <icon>DefaultMovies.png</icon> + <content>movies</content> + <order direction="ascending">sorttitle</order> +</node> diff --git a/system/library/video_flat/musicvideos.xml b/system/library/video_flat/musicvideos.xml new file mode 100644 index 0000000..a63945f --- /dev/null +++ b/system/library/video_flat/musicvideos.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="30" type="filter" visible="Library.HasContent(MusicVideos)"> + <label>20389</label> + <icon>DefaultMusicVideos.png</icon> + <content>musicvideos</content> + <order direction="ascending">title</order> +</node> diff --git a/system/library/video_flat/playlists.xml b/system/library/video_flat/playlists.xml new file mode 100644 index 0000000..4cc2aec --- /dev/null +++ b/system/library/video_flat/playlists.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="90" type="folder"> + <label>136</label> + <icon>DefaultVideoPlaylists.png</icon> + <path>special://videoplaylists/</path> +</node> diff --git a/system/library/video_flat/recentlyaddedepisodes.xml b/system/library/video_flat/recentlyaddedepisodes.xml new file mode 100644 index 0000000..44dcd0b --- /dev/null +++ b/system/library/video_flat/recentlyaddedepisodes.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="60" type="folder" visible="Library.HasContent(TVShows)"> + <label>20387</label> + <icon>DefaultRecentlyAddedEpisodes.png</icon> + <path>videodb://recentlyaddedepisodes/</path> +</node> diff --git a/system/library/video_flat/recentlyaddedmovies.xml b/system/library/video_flat/recentlyaddedmovies.xml new file mode 100644 index 0000000..214c4dc --- /dev/null +++ b/system/library/video_flat/recentlyaddedmovies.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="50" type="folder" visible="Library.HasContent(Movies)"> + <label>20386</label> + <icon>DefaultRecentlyAddedMovies.png</icon> + <path>videodb://recentlyaddedmovies/</path> +</node> diff --git a/system/library/video_flat/recentlyaddedmusicvideos.xml b/system/library/video_flat/recentlyaddedmusicvideos.xml new file mode 100644 index 0000000..e03a9e4 --- /dev/null +++ b/system/library/video_flat/recentlyaddedmusicvideos.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="70" type="folder" visible="Library.HasContent(MusicVideos)"> + <label>20390</label> + <icon>DefaultRecentlyAddedMusicVideos.png</icon> + <path>videodb://recentlyaddedmusicvideos/</path> +</node> diff --git a/system/library/video_flat/tvshows.xml b/system/library/video_flat/tvshows.xml new file mode 100644 index 0000000..6509bd8 --- /dev/null +++ b/system/library/video_flat/tvshows.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<node order="20" type="filter" visible="Library.HasContent(TVShows)"> + <label>20343</label> + <icon>DefaultTVShows.png</icon> + <content>tvshows</content> + <order direction="ascending">sorttitle</order> +</node> diff --git a/system/peripherals.xml b/system/peripherals.xml new file mode 100644 index 0000000..a110c0d --- /dev/null +++ b/system/peripherals.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> +<peripherals> + <peripheral vendor_product="1915:003B,22B8:003B" bus="usb" name="Motorola Nyxboard Hybrid" mapTo="nyxboard"> + <setting key="do_not_use_custom_keymap" type="bool" value="0" label="35009" order="1" /> + <setting key="keymap" value="nyxboard" label="35007" configurable="0" /> + <setting key="enable_flip_commands" type="bool" value="1" label="36005" order="2" /> + <setting key="flip_keyboard" value="VideoLibrary.Search" label="36002" order="3" /> + <setting key="flip_remote" value="Dialog.Close(virtualkeyboard)" label="36003" order="4" /> + </peripheral> + + <peripheral bus="cec" name="CEC Adapter" mapTo="cec"> + <setting key="enabled" type="bool" value="1" label="305" order="1" /> + <setting key="activate_source" type="bool" value="1" label="36020" order="2" /> + <setting key="wake_devices" type="enum" value="36037" label="36007" lvalues="36037|36038|36039|231" order="3" /> + <setting key="standby_devices" type="enum" value="36037" label="36008" lvalues="36037|36038|36039|231" order="4" /> + <setting key="send_inactive_source" type="bool" value="1" label="36025" order="5" /> + <setting key="cec_standby_screensaver" type="bool" value="0" label="36009" order="6" /> + <setting key="cec_wake_screensaver" type="bool" value="1" label="36010" order="7" /> + <setting key="standby_pc_on_tv_standby" type="enum" value="13011" label="36029" order="8" lvalues="36028|13005|13011|13010|13009|36044|36045" /> + <setting key="standby_tv_on_pc_standby" type="bool" value="1" label="36026" order="9" /> + <setting key="use_tv_menu_language" type="bool" value="1" label="36018" order="10" /> + <setting key="pause_playback_on_deactivate" type="bool" value="1" label="36033" configurable="0" /> + <setting key="pause_or_stop_playback_on_deactivate" type="enum" value="231" label="36033" order="11" lvalues="231|36044|36045" /> + <setting key="connected_device" type="enum" label="36019" value="36037" lvalues="36037|36038" order="12" /> + <setting key="cec_hdmi_port" type="int" value="1" min="1" max="15" label="36015" order="13" /> + <setting key="physical_address" type="string" label="36021" value="0" order="14" /> + <setting key="power_avr_on_as" type="bool" label="36046" value="0" order="15" /> + + <setting key="tv_vendor" type="int" value="0" configurable="0" /> + <setting key="device_name" type="string" value="Kodi" configurable="0" /> + <setting key="wake_devices_advanced" type="string" value="" configurable="0" /> + <setting key="standby_devices_advanced" type="string" value="" configurable="0" /> + <setting key="double_tap_timeout_ms" type="int" min="50" max="1000" step="50" value="300" label="36047" order="16" /> + <setting key="button_repeat_rate_ms" type="int" min="0" max="250" step="10" value="0" label="36048" order="17" /> + <setting key="button_release_delay_ms" type="int" min="0" max="500" step="50" value="0" label="36049" order="18" /> + <setting key="device_type" type="enum" value="36051" label="36013" lvalues="36051|36052|36053" order="19" /> + </peripheral> + + <peripheral vendor_product="2548:1001,2548:1002" bus="usb" name="Pulse-Eight CEC Adapter" mapTo="cec"> + <!-- This entry will not create a CPeripheralCecAdapter instance, since it's filtered out in CPeripherals::CreatePeripheral, + but it will ensure that a warning is displayed when an adapter is inserted, but libCEC is not present or couldn't be loaded. + Since libCEC is now used to scan for devices, the warning will not be displayed without this mapping --> + </peripheral> + + <peripheral vendor_product="15C2:32,15C2:33,15C2:34,15C2:35,15C2:36,15C2:37,15C2:38,15C2:39,15C2:3A,15C2:3B,15C2:3C,15C2:3D,15C2:3E,15C2:3F,15C2:41,15C2:42,15C2:43,15C2:44,15C2:45,15C2:46" bus="usb" name="iMON HID device" mapTo="imon"> + <setting key="do_not_use_custom_keymap" type="bool" value="1" label="35009" configurable="0"/> + <setting key="disable_winjoystick" type="bool" value="1" label="35102" order="1" /> + </peripheral> + + <peripheral vendor_product="2252:0106,22A1:2801" bus="usb" name="WETEK Play remote" mapTo="hid"> + <setting key="do_not_use_custom_keymap" type="bool" value="0" label="35009" order="1" /> + <setting key="keymap" value="wetek-play" label="35007" configurable="0" /> + </peripheral> + + <peripheral vendor_product="2252:1037,2017:1688,2017:1689,2017:1690" bus="usb" name="OSMC RF Remote" mapTo="hid"> + <setting key="do_not_use_custom_keymap" type="bool" value="0" label="35009" order="1"/> + <setting key="keymap" value="osmc" label="35007" configurable="1"/> + </peripheral> + + <peripheral class="joystick" name="joystick" mapTo="joystick"> + <setting key="appearance" type="addon" addontype="kodi.game.controller" label="480" order="1"/> + <setting key="left_stick_deadzone" type="float" label="35078" order="2" value="0.2" min="0.0" step="0.05" max="1.0" /> + <setting key="right_stick_deadzone" type="float" label="35079" order="3" value="0.2" min="0.0" step="0.05" max="1.0" /> + </peripheral> + +</peripherals> diff --git a/system/playercorefactory.xml b/system/playercorefactory.xml new file mode 100644 index 0000000..f928311 --- /dev/null +++ b/system/playercorefactory.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<playercorefactory> + <players> + <!-- These are compiled-in as re-ordering them would break scripts + The following aliases may also be used: + audiodefaultplayer, videodefaultplayer, videodefaultVideoPlayer + <player name="VideoPlayer" audio="true" video="true" /> + <player name="VideoPlayer" /> placeholder for MPlayer + <player name="PAPlayer" audio="true" /> + --> + </players> + + <rules name="system rules"> + <rule name="mms/udp" protocols="mms|mmsh|udp" player="VideoPlayer" /> + <rule name="lastfm/shout" protocols="lastfm|shout" player="PAPlayer" /> + <rule name="rtmp" protocols="rtmp" player="videodefaultplayer" /> + + <!-- VideoPlayer can play standard rtsp streams --> + <rule name="rtsp" protocols="rtsp" filetypes="!(rm|ra)" player="PAPlayer" /> + + <!-- Internet streams --> + <rule name="streams" internetstream="true"> + <rule name="aacp/sdp" mimetypes="audio/aacp|application/sdp" player="VideoPlayer" /> + <rule name="mp2" mimetypes="application/octet-stream" filetypes="mp2" player="PAPlayer" /> + </rule> + + <!-- DVDs --> + <rule name="dvd" dvd="true" player="VideoPlayer" /> + <rule name="discimage" discimage="true" game="false" player="VideoPlayer" /> + + <!-- Only VideoPlayer can handle these normally --> + <rule name="sdp/asf" filetypes="sdp|asf" player="VideoPlayer" /> + + <!-- Pass these to VideoPlayer as we do not know if they are audio or video --> + <rule name="nsv" filetypes="nsv" player="VideoPlayer" /> + + <!-- pvr radio channels should be played by VideoPlayer because they need buffering --> + <rule name="radio" filetypes="pvr" filename=".*/radio/.*" player="VideoPlayer" /> + </rules> +</playercorefactory> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/10-autohint.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/10-autohint.conf new file mode 100644 index 0000000..3a8b94e --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/10-autohint.conf @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- debian/autohint.conf --> +<fontconfig> +<!-- Use the Autohinter --> + <match target="font"> + <edit name="autohint" mode="assign"><bool>true</bool></edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/10-no-sub-pixel.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/10-no-sub-pixel.conf new file mode 100644 index 0000000..b3c3dac --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/10-no-sub-pixel.conf @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- conf.d/sub-pixel.conf --> +<fontconfig> +<!-- Enable sub-pixel rendering --> + <match target="font"> + <edit name="rgba" mode="assign"><const>none</const></edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-bgr.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-bgr.conf new file mode 100644 index 0000000..8b05fcd --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-bgr.conf @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- conf.d/sub-pixel.conf --> +<fontconfig> +<!-- Enable sub-pixel rendering --> + <match target="font"> + <edit name="rgba" mode="assign"><const>bgr</const></edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-rgb.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-rgb.conf new file mode 100644 index 0000000..dd1aa6d --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-rgb.conf @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- conf.d/sub-pixel.conf --> +<fontconfig> +<!-- Enable sub-pixel rendering --> + <match target="font"> + <edit name="rgba" mode="assign"><const>rgb</const></edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-vbgr.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-vbgr.conf new file mode 100644 index 0000000..e1fb404 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-vbgr.conf @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- conf.d/sub-pixel.conf --> +<fontconfig> +<!-- Enable sub-pixel rendering --> + <match target="font"> + <edit name="rgba" mode="assign"><const>vbgr</const></edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-vrgb.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-vrgb.conf new file mode 100644 index 0000000..8c4fdfc --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/10-sub-pixel-vrgb.conf @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- conf.d/sub-pixel.conf --> +<fontconfig> +<!-- Enable sub-pixel rendering --> + <match target="font"> + <edit name="rgba" mode="assign"><const>vrgb</const></edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/10-unhinted.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/10-unhinted.conf new file mode 100644 index 0000000..82c069c --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/10-unhinted.conf @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- debian/unhinted.conf --> +<fontconfig> +<!-- Disable hinting --> + <match target="font"> + <edit name="hinting" mode="assign"><bool>false</bool></edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/20-fix-globaladvance.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/20-fix-globaladvance.conf new file mode 100644 index 0000000..a62162c --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/20-fix-globaladvance.conf @@ -0,0 +1,29 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- conf.d/sub-pixel.conf --> +<fontconfig> +<!-- + Some Asian fonts misadvertise themselves as monospaced when + in fact they are dual-spaced (half and full). This makes + FreeType very confused as it forces all widths to match. + Undo this magic by disabling the width forcing code --> + <match target="font"> + <test name="family"><string>GulimChe</string></test> + <edit name="globaladvance"><bool>false</bool></edit> + </match> + + <match target="font"> + <test name="family"><string>DotumChe</string></test> + <edit name="globaladvance"><bool>false</bool></edit> + </match> + + <match target="font"> + <test name="family"><string>BatangChe</string></test> + <edit name="globaladvance"><bool>false</bool></edit> + </match> + + <match target="font"> + <test name="family"><string>GungsuhChe</string></test> + <edit name="globaladvance"><bool>false</bool></edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/20-lohit-gujarati.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/20-lohit-gujarati.conf new file mode 100644 index 0000000..1c29d0d --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/20-lohit-gujarati.conf @@ -0,0 +1,11 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> + +<!-- Available Gujarti fonts look much better without hinting --> + + <match target="font"> + <test name="family"><string>Lohit Gujarati</string></test> + <edit name="hinting"><bool>false</bool></edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/20-unhint-small-vera.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/20-unhint-small-vera.conf new file mode 100644 index 0000000..51999c5 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/20-unhint-small-vera.conf @@ -0,0 +1,49 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- conf.d/sub-pixel.conf --> +<fontconfig> +<!-- + The Bitstream Vera fonts have GASP entries suggesting that hinting be + disabled below 8 ppem, but FreeType ignores those, preferring to use + the data found in the instructed hints. The initial Vera release + didn't include the right instructions in the 'prep' table. Fix this + by disabling hinting manually at smaller sizes (< 8ppem) + --> + + <match target="font"> + <test name="family"> + <string>Bitstream Vera Sans</string> + </test> + <test name="pixelsize" compare="less"> + <double>7.5</double> + </test> + <edit name="hinting"> + <bool>false</bool> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Bitstream Vera Serif</string> + </test> + <test name="pixelsize" compare="less"> + <double>7.5</double> + </test> + <edit name="hinting"> + <bool>false</bool> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Bitstream Vera Sans Mono</string> + </test> + <test name="pixelsize" compare="less"> + <double>7.5</double> + </test> + <edit name="hinting"> + <bool>false</bool> + </edit> + </match> + +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/30-amt-aliases.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/30-amt-aliases.conf new file mode 100644 index 0000000..d6df67e --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/30-amt-aliases.conf @@ -0,0 +1,21 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- conf.d/sub-pixel.conf --> +<fontconfig> +<!-- + AMT provides metric and shape compatible fonts for these three web font + families. + --> + <alias> + <family>Times New Roman</family> + <accept><family>Thorndale AMT</family></accept> + </alias> + <alias> + <family>Arial</family> + <accept><family>Albany AMT</family></accept> + </alias> + <alias> + <family>Courier New</family> + <accept><family>Cumberland AMT</family></accept> + </alias> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/30-urw-aliases.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/30-urw-aliases.conf new file mode 100644 index 0000000..cf90dd5 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/30-urw-aliases.conf @@ -0,0 +1,52 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- conf.d/sub-pixel.conf --> +<fontconfig> +<!-- + URW provides metric and shape compatible fonts for these 10 Adobe families. + --> + <alias> + <family>Avant Garde</family> + <accept><family>URW Gothic L</family></accept> + </alias> + <alias> + <family>Bookman</family> + <accept><family>URW Bookman L</family></accept> + </alias> + <alias> + <family>Courier</family> + <accept><family>Nimbus Mono L</family></accept> + </alias> + <alias> + <family>Helvetica</family> + <accept><family>Nimbus Sans L</family></accept> + </alias> + <alias> + <family>New Century Schoolbook</family> + <accept><family>Century Schoolbook L</family></accept> + </alias> + <alias> + <family>Palatino</family> + <accept><family>URW Palladio L</family></accept> + </alias> + <alias> + <family>Times</family> + <accept><family>Nimbus Roman No9 L</family></accept> + </alias> + <alias> + <family>Zapf Chancery</family> + <accept><family>URW Chancery L</family></accept> + </alias> + <alias> + <family>Zapf Dingbats</family> + <accept><family>Dingbats</family></accept> + </alias> + <match target="pattern"> + <test name="family"> + <string>Symbol</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Standard Symbols L</string> + </edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/40-generic.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/40-generic.conf new file mode 100644 index 0000000..84e85e4 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/40-generic.conf @@ -0,0 +1,66 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> +<!-- + Mark common families with their generics so we'll get + something reasonable +--> + +<!-- + Serif faces + --> + <alias> + <family>Bitstream Vera Serif</family> + <family>DejaVu Serif</family> + <family>Times New Roman</family> + <family>Times</family> + <family>Nimbus Roman No9 L</family> + <family>Luxi Serif</family> + <family>Kochi Mincho</family> + <family>AR PL SungtiL GB</family> + <family>AR PL Mingti2L Big5</family> + <family>MS 明朝</family> + <family>Baekmuk Batang</family> + <family>FreeSerif</family> + <family>MgOpen Canonica</family> + <default><family>serif</family></default> + </alias> +<!-- + Sans-serif faces + --> + <alias> + <family>Bitstream Vera Sans</family> + <family>DejaVu Sans</family> + <family>Helvetica</family> + <family>Arial</family> + <family>Verdana</family> + <family>Albany AMT</family> + <family>Nimbus Sans L</family> + <family>Luxi Sans</family> + <family>Kochi Gothic</family> + <family>AR PL KaitiM GB</family> + <family>AR PL KaitiM Big5</family> + <family>MS ゴシック</family> + <family>Baekmuk Dotum</family> + <family>SimSun</family> + <family>FreeSans</family> + <family>MgOpen Modata</family> + <default><family>sans-serif</family></default> + </alias> +<!-- + Monospace faces + --> + <alias> + <family>Bitstream Vera Sans Mono</family> + <family>DejaVu Sans Mono</family> + <family>Courier</family> + <family>Courier New</family> + <family>Andale Mono</family> + <family>Luxi Mono</family> + <family>Cumberland AMT</family> + <family>Nimbus Mono L</family> + <family>NSimSun</family> + <family>FreeMono</family> + <default><family>monospace</family></default> + </alias> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/49-sansserif.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/49-sansserif.conf new file mode 100644 index 0000000..c6209a7 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/49-sansserif.conf @@ -0,0 +1,21 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> +<!-- + If the font still has no generic name, add sans-serif + --> + <match target="pattern"> + <test qual="all" name="family" compare="not_eq"> + <string>sans-serif</string> + </test> + <test qual="all" name="family" compare="not_eq"> + <string>serif</string> + </test> + <test qual="all" name="family" compare="not_eq"> + <string>monospace</string> + </test> + <edit name="family" mode="append_last"> + <string>sans-serif</string> + </edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/50-user.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/50-user.conf new file mode 100644 index 0000000..9a38a40 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/50-user.conf @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- /etc/fonts/conf.avail/50-user.conf file to configure system font access --> +<fontconfig> + <!-- Load per-user customization file --> + <include ignore_missing="yes">~/.fonts.conf</include> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/51-local.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/51-local.conf new file mode 100644 index 0000000..d35046e --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/51-local.conf @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- /etc/fonts/conf.avail/51-local.conf file to configure system font access --> +<fontconfig> + <!-- Load local system customization file --> + <include ignore_missing="yes">local.conf</include> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/60-latin.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/60-latin.conf new file mode 100644 index 0000000..06cdd7e --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/60-latin.conf @@ -0,0 +1,42 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> + <alias> + <family>serif</family> + <prefer> + <family>Bitstream Vera Serif</family> + <family>DejaVu Serif</family> + <family>Times New Roman</family> + <family>Thorndale AMT</family> + <family>Luxi Serif</family> + <family>Nimbus Roman No9 L</family> + <family>Times</family> + </prefer> + </alias> + <alias> + <family>sans-serif</family> + <prefer> + <family>Bitstream Vera Sans</family> + <family>DejaVu Sans</family> + <family>Verdana</family> + <family>Arial</family> + <family>Albany AMT</family> + <family>Luxi Sans</family> + <family>Nimbus Sans L</family> + <family>Helvetica</family> + </prefer> + </alias> + <alias> + <family>monospace</family> + <prefer> + <family>Bitstream Vera Sans Mono</family> + <family>DejaVu Sans Mono</family> + <family>Andale Mono</family> + <family>Courier New</family> + <family>Cumberland AMT</family> + <family>Luxi Mono</family> + <family>Nimbus Mono L</family> + <family>Courier</family> + </prefer> + </alias> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/65-fonts-persian.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/65-fonts-persian.conf new file mode 100644 index 0000000..4c9f81c --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/65-fonts-persian.conf @@ -0,0 +1,539 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- /etc/fonts/conf.d/10-fonts-persian.conf --> +<!-- + fonts-persian.conf + To configure Persian fonts from The FarsiWeb Project. + + Copyright (C) 2005 Sharif FarsiWeb, Inc. <license@farsiweb.info> + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation, and that the name of Sharif FarsiWeb, Inc. not be used in + advertising or publicity pertaining to distribution of the software without + specific, written prior permission. Sharif FarsiWeb, Inc. makes no + representations about the suitability of this software for any purpose. It + is provided "as is" without express or implied warranty. + + SHARIF FARSIWEB, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + + ChangeLog: + 2005-04-03 Behdad Esfahbod: Initial revision. + 2005-10-09 Behdad Esfahbod: Turned off back-slant and Tahoma sections. + 2005-11-30 Behdad Esfahbod: Set Titr substitution size to 24 points. + + Todo: + Add generic font "fantasy". Add some fonts into that category. + Maybe add a "cursive" generic font. + --> +<fontconfig> + + +<!-- + We don't want weak bindings. So got to use the syntactical expansion + of alias tag to do binding=same :(. Please support that in alias. + --> + + +<!-- Deprecated fonts are discouraged --> + + <!-- Nesf[2] is officially deprecated and has problematic tables --> + <match> + <test name="family"> + <string>Nesf</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Nesf2</string> + </edit> + </match> + <match> + <test name="family"> + <string>Nesf2</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Persian_sansserif_default</string> + </edit> + </match> + + <!-- Tahoma looks awful (TURNED-OFF) --> + <!--match> + <test name="family"> + <string>Tahoma</string> + </test> + <edit name="family" mode="prepend" binding="same"> + <string>Persian_sansserif_default</string> + </edit> + </match--> + +<!-- Name changes and spelling variant aliases --> + + <!-- Changed due to trademark problems --> + <match> + <test name="family"> + <string>Nazanin</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Nazli</string> + </edit> + </match> + <match> + <test name="family"> + <string>Lotus</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Lotoos</string> + </edit> + </match> + + <!-- Changed due to transcription orthography --> + <match> + <test name="family"> + <string>Yaqut</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Yaghoot</string> + </edit> + </match> + <match> + <test name="family"> + <string>Yagut</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Yaghoot</string> + </edit> + </match> + <match> + <test name="family"> + <string>Yaghut</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Yaghoot</string> + </edit> + </match> + <match> + <test name="family"> + <string>Traffic</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Terafik</string> + </edit> + </match> + <match> + <test name="family"> + <string>Ferdowsi</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Ferdosi</string> + </edit> + </match> + <match> + <test name="family"> + <string>Fantezy</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Fantezi</string> + </edit> + </match> + + +<!-- Classify fonts. --> + + <!-- Persian_title class --> + <match> + <test name="family"> + <string>Jadid</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_title</string> + </edit> + </match> + <match> + <test name="family"> + <string>Titr</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_title</string> + </edit> + </match> + + <!-- Persian_fantasy class --> + <match> + <test name="family"> + <string>Kamran</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Homa</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Persian_fantasy</string> + </edit> + </match> + <match> + <test name="family"> + <string>Homa</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Kamran</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Persian_fantasy</string> + </edit> + </match> + <match> + <test name="family"> + <string>Fantezi</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_fantasy</string> + </edit> + </match> + <match> + <test name="family"> + <string>Tabassom</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_fantasy</string> + </edit> + </match> + + <!-- Persian_square class --> + <match> + <test name="family"> + <string>Arshia</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_square</string> + </edit> + </match> + <match> + <test name="family"> + <string>Nasim</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_square</string> + </edit> + </match> + <match> + <test name="family"> + <string>Elham</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Farnaz</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Persian_square</string> + </edit> + </match> + <match> + <test name="family"> + <string>Farnaz</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Elham</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Persian_square</string> + </edit> + </match> + <match> + <test name="family"> + <string>Sina</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_square</string> + </edit> + </match> + +<!-- Font ordering per class --> + + <!-- Persian_title class --> + <match> + <test name="family"> + <string>Persian_title</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_serif</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Jadid</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Titr</string> + </edit> + </match> + + <!-- Persian_fantasy class --> + <match> + <test name="family"> + <string>Persian_fantasy</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_square</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Tabassom</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Fantezi</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Kamran</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Homa</string> + </edit> + </match> + + <!-- Persian_square class --> + <match> + <test name="family"> + <string>Persian_square</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_serif</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Sina</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Nasim</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Farnaz</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Elham</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Arshia</string> + </edit> + </match> + +<!-- Register the fonts that we actually do have --> + + <match target="font"> + <test name="family"> + <string>Elham</string> + </test> + <edit name="foundry"> + <string>farsiweb</string> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Homa</string> + </test> + <edit name="foundry"> + <string>farsiweb</string> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Koodak</string> + </test> + <edit name="foundry"> + <string>farsiweb</string> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Nazli</string> + </test> + <edit name="foundry"> + <string>farsiweb</string> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Roya</string> + </test> + <edit name="foundry"> + <string>farsiweb</string> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Terafik</string> + </test> + <edit name="foundry"> + <string>farsiweb</string> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Titr</string> + </test> + <edit name="foundry"> + <string>farsiweb</string> + </edit> + </match> + + +<!-- Our fonts should oblique to the other side (TURNED-OFF) --> + + <match target="font"> + <test name="foundry"> + <!--string>farsiweb</string--> + <string>TURNED-OFF</string> + </test> + <test name="foundry"> + <string>farsiweb</string> + </test> + <!-- check to see if the font is roman --> + <test name="slant"> + <const>roman</const> + </test> + <!-- check to see if the pattern requested non-roman --> + <test target="pattern" name="slant" compare="not_eq"> + <const>roman</const> + </test> + <!-- multiply the matrix to slant the font --> + <edit name="matrix" mode="assign"> + <times> + <name>matrix</name> + <matrix><double>1</double><double>-0.2</double> + <double>0</double><double>1</double> + </matrix> + </times> + </edit> + <!-- pretend the font is oblique now --> + <edit name="slant" mode="assign"> + <const>oblique</const> + </edit> + </match> + + +<!-- + We can't hint our fonts well, so turn off hinting. + Moreover, the bitmaps we have designed (well, they + have designed), suck, so disable them too. + --> + + <match target="font"> + <test name="foundry"> + <string>farsiweb</string> + </test> + <edit name="autohint"> + <bool>false</bool> + </edit> + <edit name="hinting"> + <bool>false</bool> + </edit> + <edit name="embeddedbitmap"> + <bool>false</bool> + </edit> + </match> + + +<!-- Alias our fonts to common families --> + + <!-- Persian serif fonts --> + <alias> + <family>serif</family> + <accept> + <family>Nazli</family> + <family>Lotoos</family> + <family>Mitra</family> + <family>Ferdosi</family> + <family>Badr</family> + <family>Zar</family> + </accept> + </alias> + + <!-- Persian sans-serif fonts --> + <alias> + <family>sans-serif</family> + <accept> + <family>Roya</family> + <family>Koodak</family> + <family>Terafik</family> + </accept> + </alias> + + <!-- Persian monospace fonts --> + <alias> + <family>monospace</family> + <accept> + <!-- Not really monospace --> + <family>Terafik</family> + </accept> + </alias> + + +<!-- Use Titr in titles --> + + <!-- Both serif... --> + <match> + <test name="family"> + <string>serif</string> + </test> + <test name="weight" compare="more_eq"> + <int>200</int> + </test> + <test name="size" compare="more_eq"> + <double>24</double> + </test> + <edit name="family" mode="prepend"> + <string>Titr</string> + </edit> + </match> + + <!-- and sans-serif. --> + <match> + <test name="family"> + <string>sans-serif</string> + </test> + <test name="weight" compare="more_eq"> + <int>200</int> + </test> + <test name="size" compare="more_eq"> + <double>24</double> + </test> + <edit name="family" mode="prepend"> + <string>Titr</string> + </edit> + </match> + + <!-- and more. --> + <match> + <test name="family"> + <string>Persian_sansserif_default</string> + </test> + <test name="weight" compare="more_eq"> + <int>200</int> + </test> + <test name="size" compare="more_eq"> + <double>24</double> + </test> + <edit name="family" mode="prepend" binding="same"> + <string>Titr</string> + </edit> + </match> + + +<!-- Default substituted for deprecated sans-serif fonts --> + + <match> + <test name="family"> + <string>Persian_sansserif_default</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Roya</string> + </edit> + </match> + +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/65-nonlatin.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/65-nonlatin.conf new file mode 100644 index 0000000..f8dbb64 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/65-nonlatin.conf @@ -0,0 +1,38 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> + <alias> + <family>serif</family> + <prefer> + <family>Frank Ruehl</family> + <family>MgOpen Canonica</family> + <family>Kochi Mincho</family> + <family>AR PL SungtiL GB</family> + <family>AR PL Mingti2L Big5</family> + <family>MS 明朝</family> + <family>Baekmuk Batang</family> + </prefer> + </alias> + <alias> + <family>sans-serif</family> + <prefer> + <family>Nachlieli</family> + <family>MgOpen Modata</family> + <family>Kochi Gothic</family> + <family>AR PL KaitiM GB</family> + <family>AR PL KaitiM Big5</family> + <family>MS ゴシック</family> + <family>Baekmuk Dotum</family> + <family>SimSun</family> + </prefer> + </alias> + <alias> + <family>monospace</family> + <prefer> + <family>Miriam Mono</family> + <family>Kochi Gothic</family> + <family>AR PL KaitiM GB</family> + <family>Baekmuk Dotum</family> + </prefer> + </alias> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/69-unifont.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/69-unifont.conf new file mode 100644 index 0000000..a784af9 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/69-unifont.conf @@ -0,0 +1,24 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> + <alias> + <family>serif</family> + <prefer> + <family>FreeSerif</family> + <family>Code2000</family> + </prefer> + </alias> + <alias> + <family>sans-serif</family> + <prefer> + <family>FreeSans</family> + <family>Arial Unicode MS</family> + </prefer> + </alias> + <alias> + <family>monospace</family> + <prefer> + <family>FreeMono</family> + </prefer> + </alias> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/70-no-bitmaps.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/70-no-bitmaps.conf new file mode 100644 index 0000000..e8fb6a9 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/70-no-bitmaps.conf @@ -0,0 +1,13 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- /etc/fonts/conf.d/no-bitmaps.conf --> +<fontconfig> +<!-- Reject bitmap fonts --> + <selectfont> + <rejectfont> + <pattern> + <patelt name="scalable"><bool>false</bool></patelt> + </pattern> + </rejectfont> + </selectfont> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/70-yes-bitmaps.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/70-yes-bitmaps.conf new file mode 100644 index 0000000..c539c70 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/70-yes-bitmaps.conf @@ -0,0 +1,13 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- conf.d/yes-bitmaps.conf --> +<fontconfig> +<!-- Accept bitmap fonts --> + <selectfont> + <acceptfont> + <pattern> + <patelt name="scalable"><bool>false</bool></patelt> + </pattern> + </acceptfont> + </selectfont> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/80-delicious.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/80-delicious.conf new file mode 100644 index 0000000..701429b --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/80-delicious.conf @@ -0,0 +1,20 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- /etc/fonts/conf.d/60-delicious.conf --> +<fontconfig> +<!-- Fix-ups for Delicious family --> + +<!-- Delicious 'heavy' variant says its Medium weight --> +<match target="scan"> + <test name="family"> + <string>Delicious</string> + </test> + <test name="style"> + <string>Heavy</string> + </test> + <edit name="weight"> + <const>heavy</const> + </edit> +</match> + +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/90-synthetic.conf b/system/players/VideoPlayer/etc/fonts/conf.avail/90-synthetic.conf new file mode 100644 index 0000000..9550c93 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/90-synthetic.conf @@ -0,0 +1,64 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> +<!-- + Artificial oblique for fonts without an italic or oblique version + --> + + <match target="font"> + <!-- check to see if the font is roman --> + <test name="slant"> + <const>roman</const> + </test> + <!-- check to see if the pattern requested non-roman --> + <test target="pattern" name="slant" compare="not_eq"> + <const>roman</const> + </test> + <!-- multiply the matrix to slant the font --> + <edit name="matrix" mode="assign"> + <times> + <name>matrix</name> + <matrix><double>1</double><double>0.2</double> + <double>0</double><double>1</double> + </matrix> + </times> + </edit> + <!-- pretend the font is oblique now --> + <edit name="slant" mode="assign"> + <const>oblique</const> + </edit> + <!-- and disable embedded bitmaps for artificial oblique --> + <edit name="embeddedbitmap" mode="assign"> + <bool>false</bool> + </edit> + </match> + +<!-- + Synthetic emboldening for fonts that do not have bold face available + --> + + <match target="font"> + <!-- check to see if the font is just regular --> + <test name="weight" compare="less_eq"> + <const>medium</const> + </test> + <!-- check to see if the pattern requests bold --> + <test target="pattern" name="weight" compare="more"> + <const>medium</const> + </test> + <!-- + set the embolden flag + needed for applications using cairo, e.g. gucharmap, gedit, ... + --> + <edit name="embolden" mode="assign"> + <bool>true</bool> + </edit> + <!-- + set weight to bold + needed for applications using Xft directly, e.g. Firefox, ... + --> + <edit name="weight" mode="assign"> + <const>bold</const> + </edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.avail/README b/system/players/VideoPlayer/etc/fonts/conf.avail/README new file mode 100644 index 0000000..79b0e96 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.avail/README @@ -0,0 +1,48 @@ +conf.d/README + +Each file in this directory is a fontconfig configuration file. Fontconfig +scans this directory, loading all files of the form [0-9][0-9]*. These files +are normally installed in ../conf.avail and then symlinked here, allowing +them to be easily installed and then enabled/disabled by adjusting the +symlinks. + +The files are loaded in numeric order, the structure of the configuration +has led to the following conventions in usage: + + Files beginning with: Contain: + + 00 through 09 Font directories + 10 through 19 system rendering defaults (AA, etc) + 10-autohint.conf + 10-no-sub-pixel.conf + 10-sub-pixel-bgr.conf + 10-sub-pixel-rgb.conf + 10-sub-pixel-vbgr.conf + 10-sub-pixel-vrgb.conf + 10-unhinted.conf + 20 through 29 font rendering options + 20-fix-globaladvance.conf + 20-lohit-gujarati.conf + 20-unhint-small-vera.conf + 30 through 39 family substitution + 30-urw-aliases.conf + 30-amt-aliases.conf + 40 through 49 generic identification, map family->generic + 40-generic-id.conf + 49-sansserif.conf + 50 through 59 alternate config file loading + 50-user.conf Load ~/.fonts.conf + 51-local.conf Load local.conf + 60 through 69 generic aliases + 60-latin.conf + 65-fonts-persian.conf + 65-nonlatin.conf + 69-unifont.conf + 70 through 79 select font (adjust which fonts are available) + 70-no-bitmaps.conf + 70-yes-bitmaps.conf + 80 through 89 match target="scan" (modify scanned patterns) + 80-delicious.conf + 90 through 98 font synthesis + 90-synthetic.conf + diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/20-fix-globaladvance.conf b/system/players/VideoPlayer/etc/fonts/conf.d/20-fix-globaladvance.conf new file mode 100644 index 0000000..a62162c --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/20-fix-globaladvance.conf @@ -0,0 +1,29 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- conf.d/sub-pixel.conf --> +<fontconfig> +<!-- + Some Asian fonts misadvertise themselves as monospaced when + in fact they are dual-spaced (half and full). This makes + FreeType very confused as it forces all widths to match. + Undo this magic by disabling the width forcing code --> + <match target="font"> + <test name="family"><string>GulimChe</string></test> + <edit name="globaladvance"><bool>false</bool></edit> + </match> + + <match target="font"> + <test name="family"><string>DotumChe</string></test> + <edit name="globaladvance"><bool>false</bool></edit> + </match> + + <match target="font"> + <test name="family"><string>BatangChe</string></test> + <edit name="globaladvance"><bool>false</bool></edit> + </match> + + <match target="font"> + <test name="family"><string>GungsuhChe</string></test> + <edit name="globaladvance"><bool>false</bool></edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/20-lohit-gujarati.conf b/system/players/VideoPlayer/etc/fonts/conf.d/20-lohit-gujarati.conf new file mode 100644 index 0000000..1c29d0d --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/20-lohit-gujarati.conf @@ -0,0 +1,11 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> + +<!-- Available Gujarti fonts look much better without hinting --> + + <match target="font"> + <test name="family"><string>Lohit Gujarati</string></test> + <edit name="hinting"><bool>false</bool></edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/20-unhint-small-vera.conf b/system/players/VideoPlayer/etc/fonts/conf.d/20-unhint-small-vera.conf new file mode 100644 index 0000000..51999c5 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/20-unhint-small-vera.conf @@ -0,0 +1,49 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- conf.d/sub-pixel.conf --> +<fontconfig> +<!-- + The Bitstream Vera fonts have GASP entries suggesting that hinting be + disabled below 8 ppem, but FreeType ignores those, preferring to use + the data found in the instructed hints. The initial Vera release + didn't include the right instructions in the 'prep' table. Fix this + by disabling hinting manually at smaller sizes (< 8ppem) + --> + + <match target="font"> + <test name="family"> + <string>Bitstream Vera Sans</string> + </test> + <test name="pixelsize" compare="less"> + <double>7.5</double> + </test> + <edit name="hinting"> + <bool>false</bool> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Bitstream Vera Serif</string> + </test> + <test name="pixelsize" compare="less"> + <double>7.5</double> + </test> + <edit name="hinting"> + <bool>false</bool> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Bitstream Vera Sans Mono</string> + </test> + <test name="pixelsize" compare="less"> + <double>7.5</double> + </test> + <edit name="hinting"> + <bool>false</bool> + </edit> + </match> + +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/30-amt-aliases.conf b/system/players/VideoPlayer/etc/fonts/conf.d/30-amt-aliases.conf new file mode 100644 index 0000000..d6df67e --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/30-amt-aliases.conf @@ -0,0 +1,21 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- conf.d/sub-pixel.conf --> +<fontconfig> +<!-- + AMT provides metric and shape compatible fonts for these three web font + families. + --> + <alias> + <family>Times New Roman</family> + <accept><family>Thorndale AMT</family></accept> + </alias> + <alias> + <family>Arial</family> + <accept><family>Albany AMT</family></accept> + </alias> + <alias> + <family>Courier New</family> + <accept><family>Cumberland AMT</family></accept> + </alias> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/30-urw-aliases.conf b/system/players/VideoPlayer/etc/fonts/conf.d/30-urw-aliases.conf new file mode 100644 index 0000000..cf90dd5 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/30-urw-aliases.conf @@ -0,0 +1,52 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- conf.d/sub-pixel.conf --> +<fontconfig> +<!-- + URW provides metric and shape compatible fonts for these 10 Adobe families. + --> + <alias> + <family>Avant Garde</family> + <accept><family>URW Gothic L</family></accept> + </alias> + <alias> + <family>Bookman</family> + <accept><family>URW Bookman L</family></accept> + </alias> + <alias> + <family>Courier</family> + <accept><family>Nimbus Mono L</family></accept> + </alias> + <alias> + <family>Helvetica</family> + <accept><family>Nimbus Sans L</family></accept> + </alias> + <alias> + <family>New Century Schoolbook</family> + <accept><family>Century Schoolbook L</family></accept> + </alias> + <alias> + <family>Palatino</family> + <accept><family>URW Palladio L</family></accept> + </alias> + <alias> + <family>Times</family> + <accept><family>Nimbus Roman No9 L</family></accept> + </alias> + <alias> + <family>Zapf Chancery</family> + <accept><family>URW Chancery L</family></accept> + </alias> + <alias> + <family>Zapf Dingbats</family> + <accept><family>Dingbats</family></accept> + </alias> + <match target="pattern"> + <test name="family"> + <string>Symbol</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Standard Symbols L</string> + </edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/40-generic.conf b/system/players/VideoPlayer/etc/fonts/conf.d/40-generic.conf new file mode 100644 index 0000000..84e85e4 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/40-generic.conf @@ -0,0 +1,66 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> +<!-- + Mark common families with their generics so we'll get + something reasonable +--> + +<!-- + Serif faces + --> + <alias> + <family>Bitstream Vera Serif</family> + <family>DejaVu Serif</family> + <family>Times New Roman</family> + <family>Times</family> + <family>Nimbus Roman No9 L</family> + <family>Luxi Serif</family> + <family>Kochi Mincho</family> + <family>AR PL SungtiL GB</family> + <family>AR PL Mingti2L Big5</family> + <family>MS 明朝</family> + <family>Baekmuk Batang</family> + <family>FreeSerif</family> + <family>MgOpen Canonica</family> + <default><family>serif</family></default> + </alias> +<!-- + Sans-serif faces + --> + <alias> + <family>Bitstream Vera Sans</family> + <family>DejaVu Sans</family> + <family>Helvetica</family> + <family>Arial</family> + <family>Verdana</family> + <family>Albany AMT</family> + <family>Nimbus Sans L</family> + <family>Luxi Sans</family> + <family>Kochi Gothic</family> + <family>AR PL KaitiM GB</family> + <family>AR PL KaitiM Big5</family> + <family>MS ゴシック</family> + <family>Baekmuk Dotum</family> + <family>SimSun</family> + <family>FreeSans</family> + <family>MgOpen Modata</family> + <default><family>sans-serif</family></default> + </alias> +<!-- + Monospace faces + --> + <alias> + <family>Bitstream Vera Sans Mono</family> + <family>DejaVu Sans Mono</family> + <family>Courier</family> + <family>Courier New</family> + <family>Andale Mono</family> + <family>Luxi Mono</family> + <family>Cumberland AMT</family> + <family>Nimbus Mono L</family> + <family>NSimSun</family> + <family>FreeMono</family> + <default><family>monospace</family></default> + </alias> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/49-sansserif.conf b/system/players/VideoPlayer/etc/fonts/conf.d/49-sansserif.conf new file mode 100644 index 0000000..c6209a7 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/49-sansserif.conf @@ -0,0 +1,21 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> +<!-- + If the font still has no generic name, add sans-serif + --> + <match target="pattern"> + <test qual="all" name="family" compare="not_eq"> + <string>sans-serif</string> + </test> + <test qual="all" name="family" compare="not_eq"> + <string>serif</string> + </test> + <test qual="all" name="family" compare="not_eq"> + <string>monospace</string> + </test> + <edit name="family" mode="append_last"> + <string>sans-serif</string> + </edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/50-user.conf b/system/players/VideoPlayer/etc/fonts/conf.d/50-user.conf new file mode 100644 index 0000000..9a38a40 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/50-user.conf @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- /etc/fonts/conf.avail/50-user.conf file to configure system font access --> +<fontconfig> + <!-- Load per-user customization file --> + <include ignore_missing="yes">~/.fonts.conf</include> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/51-local.conf b/system/players/VideoPlayer/etc/fonts/conf.d/51-local.conf new file mode 100644 index 0000000..d35046e --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/51-local.conf @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- /etc/fonts/conf.avail/51-local.conf file to configure system font access --> +<fontconfig> + <!-- Load local system customization file --> + <include ignore_missing="yes">local.conf</include> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/60-latin.conf b/system/players/VideoPlayer/etc/fonts/conf.d/60-latin.conf new file mode 100644 index 0000000..06cdd7e --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/60-latin.conf @@ -0,0 +1,42 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> + <alias> + <family>serif</family> + <prefer> + <family>Bitstream Vera Serif</family> + <family>DejaVu Serif</family> + <family>Times New Roman</family> + <family>Thorndale AMT</family> + <family>Luxi Serif</family> + <family>Nimbus Roman No9 L</family> + <family>Times</family> + </prefer> + </alias> + <alias> + <family>sans-serif</family> + <prefer> + <family>Bitstream Vera Sans</family> + <family>DejaVu Sans</family> + <family>Verdana</family> + <family>Arial</family> + <family>Albany AMT</family> + <family>Luxi Sans</family> + <family>Nimbus Sans L</family> + <family>Helvetica</family> + </prefer> + </alias> + <alias> + <family>monospace</family> + <prefer> + <family>Bitstream Vera Sans Mono</family> + <family>DejaVu Sans Mono</family> + <family>Andale Mono</family> + <family>Courier New</family> + <family>Cumberland AMT</family> + <family>Luxi Mono</family> + <family>Nimbus Mono L</family> + <family>Courier</family> + </prefer> + </alias> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/65-fonts-persian.conf b/system/players/VideoPlayer/etc/fonts/conf.d/65-fonts-persian.conf new file mode 100644 index 0000000..4c9f81c --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/65-fonts-persian.conf @@ -0,0 +1,539 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- /etc/fonts/conf.d/10-fonts-persian.conf --> +<!-- + fonts-persian.conf + To configure Persian fonts from The FarsiWeb Project. + + Copyright (C) 2005 Sharif FarsiWeb, Inc. <license@farsiweb.info> + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation, and that the name of Sharif FarsiWeb, Inc. not be used in + advertising or publicity pertaining to distribution of the software without + specific, written prior permission. Sharif FarsiWeb, Inc. makes no + representations about the suitability of this software for any purpose. It + is provided "as is" without express or implied warranty. + + SHARIF FARSIWEB, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + + ChangeLog: + 2005-04-03 Behdad Esfahbod: Initial revision. + 2005-10-09 Behdad Esfahbod: Turned off back-slant and Tahoma sections. + 2005-11-30 Behdad Esfahbod: Set Titr substitution size to 24 points. + + Todo: + Add generic font "fantasy". Add some fonts into that category. + Maybe add a "cursive" generic font. + --> +<fontconfig> + + +<!-- + We don't want weak bindings. So got to use the syntactical expansion + of alias tag to do binding=same :(. Please support that in alias. + --> + + +<!-- Deprecated fonts are discouraged --> + + <!-- Nesf[2] is officially deprecated and has problematic tables --> + <match> + <test name="family"> + <string>Nesf</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Nesf2</string> + </edit> + </match> + <match> + <test name="family"> + <string>Nesf2</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Persian_sansserif_default</string> + </edit> + </match> + + <!-- Tahoma looks awful (TURNED-OFF) --> + <!--match> + <test name="family"> + <string>Tahoma</string> + </test> + <edit name="family" mode="prepend" binding="same"> + <string>Persian_sansserif_default</string> + </edit> + </match--> + +<!-- Name changes and spelling variant aliases --> + + <!-- Changed due to trademark problems --> + <match> + <test name="family"> + <string>Nazanin</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Nazli</string> + </edit> + </match> + <match> + <test name="family"> + <string>Lotus</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Lotoos</string> + </edit> + </match> + + <!-- Changed due to transcription orthography --> + <match> + <test name="family"> + <string>Yaqut</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Yaghoot</string> + </edit> + </match> + <match> + <test name="family"> + <string>Yagut</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Yaghoot</string> + </edit> + </match> + <match> + <test name="family"> + <string>Yaghut</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Yaghoot</string> + </edit> + </match> + <match> + <test name="family"> + <string>Traffic</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Terafik</string> + </edit> + </match> + <match> + <test name="family"> + <string>Ferdowsi</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Ferdosi</string> + </edit> + </match> + <match> + <test name="family"> + <string>Fantezy</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Fantezi</string> + </edit> + </match> + + +<!-- Classify fonts. --> + + <!-- Persian_title class --> + <match> + <test name="family"> + <string>Jadid</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_title</string> + </edit> + </match> + <match> + <test name="family"> + <string>Titr</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_title</string> + </edit> + </match> + + <!-- Persian_fantasy class --> + <match> + <test name="family"> + <string>Kamran</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Homa</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Persian_fantasy</string> + </edit> + </match> + <match> + <test name="family"> + <string>Homa</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Kamran</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Persian_fantasy</string> + </edit> + </match> + <match> + <test name="family"> + <string>Fantezi</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_fantasy</string> + </edit> + </match> + <match> + <test name="family"> + <string>Tabassom</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_fantasy</string> + </edit> + </match> + + <!-- Persian_square class --> + <match> + <test name="family"> + <string>Arshia</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_square</string> + </edit> + </match> + <match> + <test name="family"> + <string>Nasim</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_square</string> + </edit> + </match> + <match> + <test name="family"> + <string>Elham</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Farnaz</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Persian_square</string> + </edit> + </match> + <match> + <test name="family"> + <string>Farnaz</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Elham</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Persian_square</string> + </edit> + </match> + <match> + <test name="family"> + <string>Sina</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_square</string> + </edit> + </match> + +<!-- Font ordering per class --> + + <!-- Persian_title class --> + <match> + <test name="family"> + <string>Persian_title</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_serif</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Jadid</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Titr</string> + </edit> + </match> + + <!-- Persian_fantasy class --> + <match> + <test name="family"> + <string>Persian_fantasy</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_square</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Tabassom</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Fantezi</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Kamran</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Homa</string> + </edit> + </match> + + <!-- Persian_square class --> + <match> + <test name="family"> + <string>Persian_square</string> + </test> + <edit name="family" mode="append" binding="same"> + <string>Persian_serif</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Sina</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Nasim</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Farnaz</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Elham</string> + </edit> + <edit name="family" mode="append" binding="same"> + <string>Arshia</string> + </edit> + </match> + +<!-- Register the fonts that we actually do have --> + + <match target="font"> + <test name="family"> + <string>Elham</string> + </test> + <edit name="foundry"> + <string>farsiweb</string> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Homa</string> + </test> + <edit name="foundry"> + <string>farsiweb</string> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Koodak</string> + </test> + <edit name="foundry"> + <string>farsiweb</string> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Nazli</string> + </test> + <edit name="foundry"> + <string>farsiweb</string> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Roya</string> + </test> + <edit name="foundry"> + <string>farsiweb</string> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Terafik</string> + </test> + <edit name="foundry"> + <string>farsiweb</string> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Titr</string> + </test> + <edit name="foundry"> + <string>farsiweb</string> + </edit> + </match> + + +<!-- Our fonts should oblique to the other side (TURNED-OFF) --> + + <match target="font"> + <test name="foundry"> + <!--string>farsiweb</string--> + <string>TURNED-OFF</string> + </test> + <test name="foundry"> + <string>farsiweb</string> + </test> + <!-- check to see if the font is roman --> + <test name="slant"> + <const>roman</const> + </test> + <!-- check to see if the pattern requested non-roman --> + <test target="pattern" name="slant" compare="not_eq"> + <const>roman</const> + </test> + <!-- multiply the matrix to slant the font --> + <edit name="matrix" mode="assign"> + <times> + <name>matrix</name> + <matrix><double>1</double><double>-0.2</double> + <double>0</double><double>1</double> + </matrix> + </times> + </edit> + <!-- pretend the font is oblique now --> + <edit name="slant" mode="assign"> + <const>oblique</const> + </edit> + </match> + + +<!-- + We can't hint our fonts well, so turn off hinting. + Moreover, the bitmaps we have designed (well, they + have designed), suck, so disable them too. + --> + + <match target="font"> + <test name="foundry"> + <string>farsiweb</string> + </test> + <edit name="autohint"> + <bool>false</bool> + </edit> + <edit name="hinting"> + <bool>false</bool> + </edit> + <edit name="embeddedbitmap"> + <bool>false</bool> + </edit> + </match> + + +<!-- Alias our fonts to common families --> + + <!-- Persian serif fonts --> + <alias> + <family>serif</family> + <accept> + <family>Nazli</family> + <family>Lotoos</family> + <family>Mitra</family> + <family>Ferdosi</family> + <family>Badr</family> + <family>Zar</family> + </accept> + </alias> + + <!-- Persian sans-serif fonts --> + <alias> + <family>sans-serif</family> + <accept> + <family>Roya</family> + <family>Koodak</family> + <family>Terafik</family> + </accept> + </alias> + + <!-- Persian monospace fonts --> + <alias> + <family>monospace</family> + <accept> + <!-- Not really monospace --> + <family>Terafik</family> + </accept> + </alias> + + +<!-- Use Titr in titles --> + + <!-- Both serif... --> + <match> + <test name="family"> + <string>serif</string> + </test> + <test name="weight" compare="more_eq"> + <int>200</int> + </test> + <test name="size" compare="more_eq"> + <double>24</double> + </test> + <edit name="family" mode="prepend"> + <string>Titr</string> + </edit> + </match> + + <!-- and sans-serif. --> + <match> + <test name="family"> + <string>sans-serif</string> + </test> + <test name="weight" compare="more_eq"> + <int>200</int> + </test> + <test name="size" compare="more_eq"> + <double>24</double> + </test> + <edit name="family" mode="prepend"> + <string>Titr</string> + </edit> + </match> + + <!-- and more. --> + <match> + <test name="family"> + <string>Persian_sansserif_default</string> + </test> + <test name="weight" compare="more_eq"> + <int>200</int> + </test> + <test name="size" compare="more_eq"> + <double>24</double> + </test> + <edit name="family" mode="prepend" binding="same"> + <string>Titr</string> + </edit> + </match> + + +<!-- Default substituted for deprecated sans-serif fonts --> + + <match> + <test name="family"> + <string>Persian_sansserif_default</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Roya</string> + </edit> + </match> + +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/65-nonlatin.conf b/system/players/VideoPlayer/etc/fonts/conf.d/65-nonlatin.conf new file mode 100644 index 0000000..f8dbb64 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/65-nonlatin.conf @@ -0,0 +1,38 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> + <alias> + <family>serif</family> + <prefer> + <family>Frank Ruehl</family> + <family>MgOpen Canonica</family> + <family>Kochi Mincho</family> + <family>AR PL SungtiL GB</family> + <family>AR PL Mingti2L Big5</family> + <family>MS 明朝</family> + <family>Baekmuk Batang</family> + </prefer> + </alias> + <alias> + <family>sans-serif</family> + <prefer> + <family>Nachlieli</family> + <family>MgOpen Modata</family> + <family>Kochi Gothic</family> + <family>AR PL KaitiM GB</family> + <family>AR PL KaitiM Big5</family> + <family>MS ゴシック</family> + <family>Baekmuk Dotum</family> + <family>SimSun</family> + </prefer> + </alias> + <alias> + <family>monospace</family> + <prefer> + <family>Miriam Mono</family> + <family>Kochi Gothic</family> + <family>AR PL KaitiM GB</family> + <family>Baekmuk Dotum</family> + </prefer> + </alias> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/69-unifont.conf b/system/players/VideoPlayer/etc/fonts/conf.d/69-unifont.conf new file mode 100644 index 0000000..a784af9 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/69-unifont.conf @@ -0,0 +1,24 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> + <alias> + <family>serif</family> + <prefer> + <family>FreeSerif</family> + <family>Code2000</family> + </prefer> + </alias> + <alias> + <family>sans-serif</family> + <prefer> + <family>FreeSans</family> + <family>Arial Unicode MS</family> + </prefer> + </alias> + <alias> + <family>monospace</family> + <prefer> + <family>FreeMono</family> + </prefer> + </alias> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/80-delicious.conf b/system/players/VideoPlayer/etc/fonts/conf.d/80-delicious.conf new file mode 100644 index 0000000..701429b --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/80-delicious.conf @@ -0,0 +1,20 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- /etc/fonts/conf.d/60-delicious.conf --> +<fontconfig> +<!-- Fix-ups for Delicious family --> + +<!-- Delicious 'heavy' variant says its Medium weight --> +<match target="scan"> + <test name="family"> + <string>Delicious</string> + </test> + <test name="style"> + <string>Heavy</string> + </test> + <edit name="weight"> + <const>heavy</const> + </edit> +</match> + +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/conf.d/90-synthetic.conf b/system/players/VideoPlayer/etc/fonts/conf.d/90-synthetic.conf new file mode 100644 index 0000000..9550c93 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/conf.d/90-synthetic.conf @@ -0,0 +1,64 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> +<!-- + Artificial oblique for fonts without an italic or oblique version + --> + + <match target="font"> + <!-- check to see if the font is roman --> + <test name="slant"> + <const>roman</const> + </test> + <!-- check to see if the pattern requested non-roman --> + <test target="pattern" name="slant" compare="not_eq"> + <const>roman</const> + </test> + <!-- multiply the matrix to slant the font --> + <edit name="matrix" mode="assign"> + <times> + <name>matrix</name> + <matrix><double>1</double><double>0.2</double> + <double>0</double><double>1</double> + </matrix> + </times> + </edit> + <!-- pretend the font is oblique now --> + <edit name="slant" mode="assign"> + <const>oblique</const> + </edit> + <!-- and disable embedded bitmaps for artificial oblique --> + <edit name="embeddedbitmap" mode="assign"> + <bool>false</bool> + </edit> + </match> + +<!-- + Synthetic emboldening for fonts that do not have bold face available + --> + + <match target="font"> + <!-- check to see if the font is just regular --> + <test name="weight" compare="less_eq"> + <const>medium</const> + </test> + <!-- check to see if the pattern requests bold --> + <test target="pattern" name="weight" compare="more"> + <const>medium</const> + </test> + <!-- + set the embolden flag + needed for applications using cairo, e.g. gucharmap, gedit, ... + --> + <edit name="embolden" mode="assign"> + <bool>true</bool> + </edit> + <!-- + set weight to bold + needed for applications using Xft directly, e.g. Firefox, ... + --> + <edit name="weight" mode="assign"> + <const>bold</const> + </edit> + </match> +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/fonts.conf b/system/players/VideoPlayer/etc/fonts/fonts.conf new file mode 100644 index 0000000..9e2067c --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/fonts.conf @@ -0,0 +1,156 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<!-- /etc/fonts/fonts.conf file to configure system font access --> +<fontconfig> + +<!-- + DO NOT EDIT THIS FILE. + IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED. + LOCAL CHANGES BELONG IN 'local.conf'. + + The intent of this standard configuration file is to be adequate for + most environments. If you have a reasonably normal environment and + have found problems with this configuration, they are probably + things that others will also want fixed. Please submit any + problems to the fontconfig bugzilla system located at fontconfig.org + + Note that the normal 'make install' procedure for fontconfig is to + replace any existing fonts.conf file with the new version. Place + any local customizations in local.conf which this file references. + + Keith Packard +--> + +<!-- Font directory list --> + +<!-- + Uncomment this directory if we need libass and fontconfig to access all system fonts. + The drawback is the long initial indexing time by fontconfig, and mkv files usually + include their fonts. + <dir>WINDOWSFONTDIR</dir> +--> + <dir>media/Fonts</dir> <!-- used by an installed XBMC --> + <dir>../../media/Fonts</dir> <!-- used when running in Visual Studio --> + <dir>~/.fonts</dir> + +<!-- Font cache directory list --> + + <cachedir>WINDOWSTEMPDIR_FONTCONFIG_CACHE</cachedir> + <cachedir>~/.fontconfig</cachedir> + +<!-- + Accept deprecated 'mono' alias, replacing it with 'monospace' +--> + <match target="pattern"> + <test qual="any" name="family"> + <string>mono</string> + </test> + <edit name="family" mode="assign"> + <string>monospace</string> + </edit> + </match> + +<!-- + Accept alternate 'sans serif' spelling, replacing it with 'sans-serif' +--> + <match target="pattern"> + <test qual="any" name="family"> + <string>sans serif</string> + </test> + <edit name="family" mode="assign"> + <string>sans-serif</string> + </edit> + </match> + +<!-- + Accept deprecated 'sans' alias, replacing it with 'sans-serif' +--> + <match target="pattern"> + <test qual="any" name="family"> + <string>sans</string> + </test> + <edit name="family" mode="assign"> + <string>sans-serif</string> + </edit> + </match> + +<!-- + Load local system customization file +--> + <include ignore_missing="yes">conf.d</include> + + <config> +<!-- + These are the default Unicode chars that are expected to be blank + in fonts. All other blank chars are assumed to be broken and + won't appear in the resulting charsets + --> + <blank> + <int>0x0020</int> <!-- SPACE --> + <int>0x00A0</int> <!-- NO-BREAK SPACE --> + <int>0x00AD</int> <!-- SOFT HYPHEN --> + <int>0x034F</int> <!-- COMBINING GRAPHEME JOINER --> + <int>0x0600</int> <!-- ARABIC NUMBER SIGN --> + <int>0x0601</int> <!-- ARABIC SIGN SANAH --> + <int>0x0602</int> <!-- ARABIC FOOTNOTE MARKER --> + <int>0x0603</int> <!-- ARABIC SIGN SAFHA --> + <int>0x06DD</int> <!-- ARABIC END OF AYAH --> + <int>0x070F</int> <!-- SYRIAC ABBREVIATION MARK --> + <int>0x115F</int> <!-- HANGUL CHOSEONG FILLER --> + <int>0x1160</int> <!-- HANGUL JUNGSEONG FILLER --> + <int>0x1680</int> <!-- OGHAM SPACE MARK --> + <int>0x17B4</int> <!-- KHMER VOWEL INHERENT AQ --> + <int>0x17B5</int> <!-- KHMER VOWEL INHERENT AA --> + <int>0x180E</int> <!-- MONGOLIAN VOWEL SEPARATOR --> + <int>0x2000</int> <!-- EN QUAD --> + <int>0x2001</int> <!-- EM QUAD --> + <int>0x2002</int> <!-- EN SPACE --> + <int>0x2003</int> <!-- EM SPACE --> + <int>0x2004</int> <!-- THREE-PER-EM SPACE --> + <int>0x2005</int> <!-- FOUR-PER-EM SPACE --> + <int>0x2006</int> <!-- SIX-PER-EM SPACE --> + <int>0x2007</int> <!-- FIGURE SPACE --> + <int>0x2008</int> <!-- PUNCTUATION SPACE --> + <int>0x2009</int> <!-- THIN SPACE --> + <int>0x200A</int> <!-- HAIR SPACE --> + <int>0x200B</int> <!-- ZERO WIDTH SPACE --> + <int>0x200C</int> <!-- ZERO WIDTH NON-JOINER --> + <int>0x200D</int> <!-- ZERO WIDTH JOINER --> + <int>0x200E</int> <!-- LEFT-TO-RIGHT MARK --> + <int>0x200F</int> <!-- RIGHT-TO-LEFT MARK --> + <int>0x2028</int> <!-- LINE SEPARATOR --> + <int>0x2029</int> <!-- PARAGRAPH SEPARATOR --> + <int>0x202A</int> <!-- LEFT-TO-RIGHT EMBEDDING --> + <int>0x202B</int> <!-- RIGHT-TO-LEFT EMBEDDING --> + <int>0x202C</int> <!-- POP DIRECTIONAL FORMATTING --> + <int>0x202D</int> <!-- LEFT-TO-RIGHT OVERRIDE --> + <int>0x202E</int> <!-- RIGHT-TO-LEFT OVERRIDE --> + <int>0x202F</int> <!-- NARROW NO-BREAK SPACE --> + <int>0x205F</int> <!-- MEDIUM MATHEMATICAL SPACE --> + <int>0x2060</int> <!-- WORD JOINER --> + <int>0x2061</int> <!-- FUNCTION APPLICATION --> + <int>0x2062</int> <!-- INVISIBLE TIMES --> + <int>0x2063</int> <!-- INVISIBLE SEPARATOR --> + <int>0x206A</int> <!-- INHIBIT SYMMETRIC SWAPPING --> + <int>0x206B</int> <!-- ACTIVATE SYMMETRIC SWAPPING --> + <int>0x206C</int> <!-- INHIBIT ARABIC FORM SHAPING --> + <int>0x206D</int> <!-- ACTIVATE ARABIC FORM SHAPING --> + <int>0x206E</int> <!-- NATIONAL DIGIT SHAPES --> + <int>0x206F</int> <!-- NOMINAL DIGIT SHAPES --> + <int>0x3000</int> <!-- IDEOGRAPHIC SPACE --> + <int>0x3164</int> <!-- HANGUL FILLER --> + <int>0xFEFF</int> <!-- ZERO WIDTH NO-BREAK SPACE --> + <int>0xFFA0</int> <!-- HALFWIDTH HANGUL FILLER --> + <int>0xFFF9</int> <!-- INTERLINEAR ANNOTATION ANCHOR --> + <int>0xFFFA</int> <!-- INTERLINEAR ANNOTATION SEPARATOR --> + <int>0xFFFB</int> <!-- INTERLINEAR ANNOTATION TERMINATOR --> + </blank> +<!-- + Rescan configuration every 30 seconds when FcFontSetList is called + --> + <rescan> + <int>30</int> + </rescan> + </config> + +</fontconfig> diff --git a/system/players/VideoPlayer/etc/fonts/fonts.dtd b/system/players/VideoPlayer/etc/fonts/fonts.dtd new file mode 100644 index 0000000..d323a38 --- /dev/null +++ b/system/players/VideoPlayer/etc/fonts/fonts.dtd @@ -0,0 +1,222 @@ +<!-- This is the Document Type Definition for font configuration files --> +<!ELEMENT fontconfig (dir | + cache | + cachedir | + include | + config | + selectfont | + match | + alias)* > + +<!-- + Add a directory that provides fonts +--> +<!ELEMENT dir (#PCDATA)> +<!ATTLIST dir xml:space (default|preserve) 'preserve'> + +<!-- + Define the per-user file that holds cache font information. + + If the filename begins with '~', it is replaced with the users + home directory path. +--> +<!ELEMENT cache (#PCDATA)> +<!ATTLIST cache xml:space (default|preserve) 'preserve'> + +<!-- + Add a directory that is searched for font cache files. + These hold per-directory cache data and are searched in + order for each directory. When writing cache files, the first + directory which allows the cache file to be created is used. + + A leading '~' in a directory name is replaced with the users + home directory path. +--> +<!ELEMENT cachedir (#PCDATA)> +<!ATTLIST cachedir xml:space (default|preserve) 'preserve'> + +<!-- + Reference another configuration file; note that this + is another complete font configuration file and not + just a file included by the XML parser. + + Set 'ignore_missing' to 'yes' if errors are to be ignored. + + If the filename begins with '~', it is replaced with the users + home directory path. +--> +<!ELEMENT include (#PCDATA)> +<!ATTLIST include + ignore_missing (no|yes) "no" + xml:space (default|preserve) "preserve"> + +<!-- + Global library configuration data + --> +<!ELEMENT config (blank|rescan)*> + +<!-- + Specify the set of Unicode encoding values which + represent glyphs that are allowed to contain no + data. With this list, fontconfig can examine + fonts for broken glyphs and eliminate them from + the set of valid Unicode chars. This idea + was borrowed from Mozilla + --> +<!ELEMENT blank (int)*> + +<!-- + Aliases are just a special case for multiple match elements + + They are syntactically equivalent to: + + <match> + <test name="family"> + <string value=[family]/> + </test> + <edit name="family" mode="prepend"> + <string value=[prefer]/> + ... + </edit> + <edit name="family" mode="append"> + <string value=[accept]/> + ... + </edit> + <edit name="family" mode="append_last"> + <string value=[default]/> + ... + </edit> + </match> +--> +<!-- + Periodically rescan the font configuration and + directories to synch internal state with filesystem + --> +<!ELEMENT rescan (int)> + +<!-- + Edit list of available fonts at startup/reload time + --> +<!ELEMENT selectfont (rejectfont | acceptfont)* > + +<!ELEMENT rejectfont (glob | pattern)*> + +<!ELEMENT acceptfont (glob | pattern)*> + +<!ELEMENT glob (#PCDATA)> + +<!ELEMENT pattern (patelt)*> + +<!ENTITY % constant 'int|double|string|matrix|bool|charset|const'> + +<!ELEMENT patelt (%constant;)*> +<!ATTLIST patelt + name CDATA #REQUIRED> + +<!ELEMENT alias (family*, prefer?, accept?, default?)> +<!ELEMENT prefer (family)*> +<!ELEMENT accept (family)*> +<!ELEMENT default (family)*> +<!ELEMENT family (#PCDATA)> +<!ATTLIST family xml:space (default|preserve) 'preserve'> + +<!ENTITY % expr 'int|double|string|matrix|bool|charset + |name|const + |or|and|eq|not_eq|less|less_eq|more|more_eq|contains|not_contains + |plus|minus|times|divide|not|if|floor|ceil|round|trunc'> + +<!-- + Match and edit patterns. + + If 'target' is 'pattern', execute the match before selecting a font. + if 'target' is 'font', execute the match on the result of a font + selection. +--> +<!ELEMENT match (test*, edit*)> +<!ATTLIST match + target (pattern|font|scan) "pattern"> + +<!-- + Match a field in a pattern + + if 'qual' is 'any', then the match succeeds if any value in the field matches. + if 'qual' is 'all', then the match succeeds only if all values match. + if 'qual' is 'first', then the match succeeds only if the first value matches. + if 'qual' is 'not_first', then the match succeeds only if any value other than + the first matches. + For match elements with target=font, if test 'target' is 'pattern', + then the test is applied to the pattern used in matching rather than + to the resulting font. + + Match elements with target=scan are applied as fonts are scanned. + They edit the pattern generated from the scanned font and affect + what the fontconfig database contains. +--> +<!ELEMENT test (%expr;)*> +<!ATTLIST test + qual (any|all|first|not_first) "any" + name CDATA #REQUIRED + target (pattern|font|default) "default" + compare (eq|not_eq|less|less_eq|more|more_eq|contains|not_contains) "eq"> + +<!-- + Edit a field in a pattern + + The enclosed values are used together to edit the list of values + associated with 'name'. + + If 'name' matches one of those used in a test element for this match element: + if 'mode' is 'assign', replace the matched value. + if 'mode' is 'assign_replace', replace all of the values + if 'mode' is 'prepend', insert before the matched value + if 'mode' is 'append', insert after the matched value + if 'mode' is 'prepend_first', insert before all of the values + if 'mode' is 'append_last', insert after all of the values + If 'name' doesn't match any of those used in a test element: + if 'mode' is 'assign' or 'assign_replace, replace all of the values + if 'mode' is 'prepend' or 'prepend_first', insert before all of the values + if 'mode' is 'append' or 'append_last', insert after all of the values +--> +<!ELEMENT edit (%expr;)*> +<!ATTLIST edit + name CDATA #REQUIRED + mode (assign|assign_replace|prepend|append|prepend_first|append_last) "assign" + binding (weak|strong|same) "weak"> + +<!-- + Elements of expressions follow +--> +<!ELEMENT int (#PCDATA)> +<!ATTLIST int xml:space (default|preserve) 'preserve'> +<!ELEMENT double (#PCDATA)> +<!ATTLIST double xml:space (default|preserve) 'preserve'> +<!ELEMENT string (#PCDATA)> +<!ATTLIST string xml:space (default|preserve) 'preserve'> +<!ELEMENT matrix (double,double,double,double)> +<!ELEMENT bool (#PCDATA)> +<!ELEMENT charset (#PCDATA)> +<!ATTLIST charset xml:space (default|preserve) 'preserve'> +<!ELEMENT name (#PCDATA)> +<!ATTLIST name xml:space (default|preserve) 'preserve'> +<!ELEMENT const (#PCDATA)> +<!ATTLIST const xml:space (default|preserve) 'preserve'> +<!ELEMENT or (%expr;)*> +<!ELEMENT and (%expr;)*> +<!ELEMENT eq ((%expr;), (%expr;))> +<!ELEMENT not_eq ((%expr;), (%expr;))> +<!ELEMENT less ((%expr;), (%expr;))> +<!ELEMENT less_eq ((%expr;), (%expr;))> +<!ELEMENT more ((%expr;), (%expr;))> +<!ELEMENT more_eq ((%expr;), (%expr;))> +<!ELEMENT contains ((%expr;), (%expr;))> +<!ELEMENT not_contains ((%expr;), (%expr;))> +<!ELEMENT plus (%expr;)*> +<!ELEMENT minus (%expr;)*> +<!ELEMENT times (%expr;)*> +<!ELEMENT divide (%expr;)*> +<!ELEMENT not (%expr;)> +<!ELEMENT if ((%expr;), (%expr;), (%expr;))> +<!ELEMENT floor (%expr;)> +<!ELEMENT ceil (%expr;)> +<!ELEMENT round (%expr;)> +<!ELEMENT trunc (%expr;)> diff --git a/system/settings/android.xml b/system/settings/android.xml new file mode 100644 index 0000000..661a978 --- /dev/null +++ b/system/settings/android.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8" ?> +<settings version="1"> + <section id="system"> + <category id="display"> + <group id="1"> + <setting id="videoscreen.screen"> + <visible>false</visible> + </setting> + <setting id="videoscreen.fakefullscreen"> + <visible>false</visible> + </setting> + <setting id="videoscreen.blankdisplays"> + <visible>false</visible> + </setting> + <setting id="videoscreen.limitgui" type="integer" label="37021" help="36548"> + <level>2</level> + <default>0</default> + <constraints> + <options> + <option label="37026">0</option> <!-- auto --> + <option label="37028">720</option> <!-- 720 --> + <option label="37046">1080</option> <!-- 1080 --> + <option label="37030">9999</option> <!-- unlimited --> + </options> + </constraints> + <control type="spinner" format="string" /> + <control type="edit" format="integer" /> + </setting> + </group> + </category> + </section> + <section id="interface"> + <category id="regional"> + <group id="2"> + <setting id="locale.timezonecountry"> + <visible>false</visible> + </setting> + <setting id="locale.timezone"> + <visible>false</visible> + </setting> + </group> + </category> + </section> +</settings> diff --git a/system/settings/darwin.xml b/system/settings/darwin.xml new file mode 100644 index 0000000..55c98ad --- /dev/null +++ b/system/settings/darwin.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="utf-8" ?> +<settings version="1"> + <section id="system"> + <category id="display"> + <group id="1"> + <setting id="videoscreen.resolution" label="131" /> + <setting id="videoscreen.fakefullscreen"> + <visible>false</visible> + </setting> + </group> + </category> + <category id="audio"> + <group id="1"> + <setting id="audiooutput.channels" help="36367" /> + </group> + <group id="3"> + <setting id="audiooutput.eac3passthrough"> + <visible>false</visible> + </setting> + <setting id="audiooutput.truehdpassthrough"> + <visible>false</visible> + </setting> + <setting id="audiooutput.dtshdpassthrough"> + <visible>false</visible> + </setting> + </group> + </category> + <category id="input"> + <group id="3"> + <setting id="input.appleremotemode" type="integer" label="13600" help="36416"> + <level>1</level> + <default>1</default> <!-- APPLE_REMOTE_STANDARD --> + <constraints> + <options> + <option label="13610">0</option> <!-- APPLE_REMOTE_DISABLED --> + <option label="13611">1</option> <!-- APPLE_REMOTE_STANDARD --> + <option label="13612">2</option> <!-- APPLE_REMOTE_UNIVERSAL --> + <option label="13613">3</option> <!-- APPLE_REMOTE_MULTIREMOTE --> + </options> + </constraints> + <control type="list" format="string"/> + </setting> + <setting id="input.appleremotealwayson" type="boolean" label="13602" help="36417"> + <level>4</level> + <default>false</default> + <dependencies> + <dependency type="enable" setting="input.appleremotemode" operator="!is">0</dependency> <!-- APPLE_REMOTE_DISABLED --> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="input.appleremotesequencetime" type="integer" label="13603" help="36418"> + <level>1</level> + <default>500</default> + <constraints> + <minimum label="351">50</minimum> + <step>50</step> + <maximum>1000</maximum> + </constraints> + <dependencies> + <dependency type="enable" setting="input.appleremotemode" operator="is">2</dependency> <!-- APPLE_REMOTE_UNIVERSAL --> + </dependencies> + <control type="spinner" format="string"> + <formatlabel>14046</formatlabel> + </control> + </setting> + </group> + </category> + </section> +</settings> diff --git a/system/settings/darwin_ios.xml b/system/settings/darwin_ios.xml new file mode 100644 index 0000000..b94522a --- /dev/null +++ b/system/settings/darwin_ios.xml @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="utf-8" ?> +<settings version="1"> + <section id="player" label="14200" help=""> + <category id="videoplayer"> + <group id="2"> + <setting id="videoplayer.adjustrefreshrate"> + <visible>false</visible> + </setting> + </group> + <group id="3"> + <setting id="videoplayer.hqscalers"> + <visible>false</visible> + </setting> + </group> + </category> + <category id="discs"> + <group id="3"> + <visible>false</visible> + </group> + </category> + </section> + <section id="system"> + <category id="display"> + <group id="1"> + <setting id="videoscreen.resolution"> + <default>17</default> <!-- RES_CUSTOM --> + </setting> + <setting id="videoscreen.fakefullscreen"> + <visible>false</visible> + </setting> + <setting id="videoscreen.blankdisplays"> + <visible>false</visible> + </setting> + <setting id="videoscreen.delayrefreshchange"> + <visible>false</visible> + </setting> + </group> + </category> + <category id="audio"> + <group id="1"> + <setting id="audiooutput.audiodevice" type="string"> + <default>Default</default> + <visible>false</visible> + </setting> + </group> + <group id="3"> + <setting id="audiooutput.passthroughdevice" type="string"> + <default>Default</default> + <visible>false</visible> + </setting> + </group> + </category> + <category id="input"> + <group id="1"> + <setting id="input.peripherals"> + <visible>false</visible> + </setting> + </group> + <group id="2"> + <setting id="input.enablemouse"> + <visible>false</visible> + </setting> + </group> + <group id="3"> + <setting id="input.appleremotemode" type="integer" label="13600" help="36416"> + <visible>false</visible> + </setting> + <setting id="input.appleremotesequencetime" type="integer" label="13603" help="36418"> + <visible>false</visible> + </setting> + </group> + </category> + <category id="logging"> + <group id="1"> + <setting id="debug.sharelog" type="action" label="39118"> + <control type="button" format="action" /> + </setting> + </group> + </category> + </section> + <section id="interface"> + <category id="skin"> + <group id="1"> + <setting id="lookandfeel.skin" type="addon"> + <default>skin.estouchy</default> + </setting> + </group> + </category> + </section> +</settings> diff --git a/system/settings/darwin_osx.xml b/system/settings/darwin_osx.xml new file mode 100644 index 0000000..5d73f3b --- /dev/null +++ b/system/settings/darwin_osx.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" ?> +<settings version="1"> + <section id="system"> + <category id="input"> + <group id="3"> + <setting id="input.appleremotealwayson"> + <level>1</level> + </setting> + </group> + </category> + </section> +</settings> diff --git a/system/settings/darwin_tvos.xml b/system/settings/darwin_tvos.xml new file mode 100644 index 0000000..05bc49f --- /dev/null +++ b/system/settings/darwin_tvos.xml @@ -0,0 +1,161 @@ +<?xml version="1.0" encoding="utf-8" ?> +<settings> + <section id="interface"> + <category id="screensaver"> + <visible>false</visible> + <group id="1"> + <setting id="screensaver.mode"> + <default></default> + </setting> + <setting id="screensaver.usemusicvisinstead"> + <default>false</default> + </setting> + <setting id="screensaver.usedimonpause"> + <default>false</default> + </setting> + </group> + </category> + <category id="masterlock"> + <visible>false</visible> + </category> + </section> + <section id="system"> + <category id="input"> + <group id="1"> + <setting id="input.peripherals"> + <visible>false</visible> + </setting> + </group> + <group id="2"> + <setting id="input.enablemouse"> + <default>false</default> + <visible>false</visible> + </setting> + <setting id="input.controllerconfig"> + <visible>false</visible> + </setting> + </group> + <!-- Apple Remote --> + <group id="3"> + <setting id="input.appleremotemode"> + <visible>false</visible> + </setting> + <setting id="input.appleremotesequencetime"> + <visible>false</visible> + </setting> + </group> + <!-- Apple TV --> + <group id="4" label="13601"> + <!-- Siri remote idle timer --> + <setting id="input.siriremoteidletimerenabled" type="boolean" label="24160" help="24161"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="input.siriremoteidletime" type="integer" label="24154" help="24155"> + <level>1</level> + <default>60</default> + <constraints> + <options> + <option label="24156">30</option> + <option label="24157">60</option> + <option label="24158">90</option> + <option label="24159">120</option> + </options> + </constraints> + <control type="list" format="integer" /> + <dependencies> + <dependency type="enable" setting="input.siriremoteidletimerenabled">true</dependency> + </dependencies> + </setting> + <!-- Siri remote sensitivity --> + <setting id="input.siriremotehorizontalsensitivity" type="integer" label="34009" help="24163"> + <level>2</level> + <default>500</default> + <constraints> + <minimum>50</minimum> + <step>50</step> + <maximum>1450</maximum> + </constraints> + <control type="spinner" format="integer" delayed="false"/> + </setting> + <setting id="input.siriremoteverticalsensitivity" type="integer" label="34010" help="24163"> + <level>2</level> + <default>650</default> + <constraints> + <minimum>50</minimum> + <step>50</step> + <maximum>1450</maximum> + </constraints> + <control type="spinner" format="integer" delayed="false"/> + </setting> + <setting id="input.tvosusekodikeyboard" type="boolean" label="24162" help="34008"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + </group> + </category> + </section> + <section id="player"> + <category id="videoplayer"> + <group id="3"> + <setting id="videoplayer.hqscalers"> + <visible>false</visible> + </setting> + </group> + </category> + <category id="discs"> + <group id="3" label="620"> + <visible>false</visible> + </group> + </category> + </section> + <section id="services" label="14036" help="36319"> + <category id="airplay" label="1273" help="36602"> + <visible>false</visible> + </category> + </section> + <section id="system"> + <category id="display"> + <group id="1"> + <setting id="videoscreen.fakefullscreen"> + <visible>false</visible> + </setting> + <setting id="videoscreen.blankdisplays"> + <visible>false</visible> + </setting> + <setting id="videoscreen.resolution" type="integer" parent="videoscreen.screen" label="169" help="36352"> + <visible>false</visible> + </setting> + <setting id="videoscreen.vsync" type="integer" label="13105" help="36356"> + <default>2</default> <!-- VSYNC_ALWAYS --> + <visible>false</visible> + </setting> + </group> + </category> + <category id="audio"> + <group id="1"> + <setting id="audiooutput.audiodevice" type="string"> + <default>Default</default> + <visible>false</visible> + </setting> + </group> + <group id="3"> + <setting id="audiooutput.passthroughdevice" type="string"> + <default>Default</default> + <visible>false</visible> + </setting> + <setting id="audiooutput.supportdtshdcpudecoding" type="boolean"> + <default>false</default> + <visible>false</visible> + </setting> + </group> + </category> + <category id="powermanagement"> + <group id="1"> + <visible>false</visible> + </group> + </category> + </section> +</settings> diff --git a/system/settings/freebsd.xml b/system/settings/freebsd.xml new file mode 120000 index 0000000..fde0ce7 --- /dev/null +++ b/system/settings/freebsd.xml @@ -0,0 +1 @@ +linux.xml
\ No newline at end of file diff --git a/system/settings/linux.xml b/system/settings/linux.xml new file mode 100644 index 0000000..531974f --- /dev/null +++ b/system/settings/linux.xml @@ -0,0 +1,249 @@ +<?xml version="1.0" encoding="utf-8" ?> +<settings version="1"> + <section id="player"> + <category id="videoplayer"> + <group id="3"> + <setting id="videoplayer.usevdpau" type="boolean" label="13425" help="36155"> + <requirement>HAVE_LIBVDPAU</requirement> + <visible>false</visible> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevdpaumixer" type="boolean" label="13437" help="36421"> + <requirement>HAVE_LIBVDPAU</requirement> + <visible>false</visible> + <level>2</level> + <default>true</default> + <dependencies> + <dependency type="enable"> + <condition setting="videoplayer.usevdpau" operator="is">true</condition> <!-- USE VDPAU --> + </dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevdpaumpeg2" type="boolean" parent="videoplayer.usevdpau" label="13441" help="13442"> + <requirement>HAVE_LIBVDPAU</requirement> + <visible>false</visible> + <level>3</level> + <default>false</default> + <dependencies> + <dependency type="enable"> + <condition setting="videoplayer.usevdpau" operator="is">true</condition> <!-- USE VDPAU --> + </dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevdpaumpeg4" type="boolean" parent="videoplayer.usevdpau" label="13443" help="13444"> + <requirement>HAVE_LIBVDPAU</requirement> + <visible>false</visible> + <level>3</level> + <default>false</default> + <dependencies> + <dependency type="enable"> + <condition setting="videoplayer.usevdpau" operator="is">true</condition> <!-- USE VDPAU --> + </dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevdpauvc1" type="boolean" parent="videoplayer.usevdpau" label="13445" help="13446"> + <requirement>HAVE_LIBVDPAU</requirement> + <visible>false</visible> + <level>3</level> + <default>true</default> + <dependencies> + <dependency type="enable"> + <condition setting="videoplayer.usevdpau" operator="is">true</condition> <!-- USE VDPAU --> + </dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevaapi" type="boolean" label="13426" help="36156"> + <requirement>HAVE_LIBVA</requirement> + <visible>false</visible> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevaapimpeg2" type="boolean" parent="videoplayer.usevaapi" label="13447" help="13448"> + <requirement>HAVE_LIBVA</requirement> + <visible>false</visible> + <dependencies> + <dependency type="enable"> + <condition setting="videoplayer.usevaapi" operator="is">true</condition> + </dependency> + </dependencies> + <level>3</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevaapimpeg4" type="boolean" parent="videoplayer.usevaapi" label="13449" help="13450"> + <requirement>HAVE_LIBVA</requirement> + <visible>false</visible> + <dependencies> + <dependency type="enable"> + <condition setting="videoplayer.usevaapi" operator="is">true</condition> + </dependency> + </dependencies> + <level>3</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevaapivc1" type="boolean" parent="videoplayer.usevaapi" label="13451" help="13452"> + <requirement>HAVE_LIBVA</requirement> + <visible>false</visible> + <dependencies> + <dependency type="enable"> + <condition setting="videoplayer.usevaapi" operator="is">true</condition> + </dependency> + </dependencies> + <level>3</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevaapivp8" type="boolean" parent="videoplayer.usevaapi" label="13453" help="13454"> + <requirement>HAVE_LIBVA</requirement> + <visible>false</visible> + <dependencies> + <dependency type="enable"> + <condition setting="videoplayer.usevaapi" operator="is">true</condition> + </dependency> + </dependencies> + <level>3</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevaapivp9" type="boolean" parent="videoplayer.usevaapi" label="13455" help="13456"> + <requirement>HAVE_LIBVA</requirement> + <visible>false</visible> + <dependencies> + <dependency type="enable"> + <condition setting="videoplayer.usevaapi" operator="is">true</condition> + </dependency> + </dependencies> + <level>3</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevaapihevc" type="boolean" parent="videoplayer.usevaapi" label="13460" help="13461"> + <requirement>HAVE_LIBVA</requirement> + <visible>false</visible> + <dependencies> + <dependency type="enable"> + <condition setting="videoplayer.usevaapi" operator="is">true</condition> + </dependency> + </dependencies> + <level>3</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevaapiav1" type="boolean" parent="videoplayer.usevaapi" label="13468" help="13469"> + <requirement>HAVE_LIBVA</requirement> + <visible>false</visible> + <dependencies> + <dependency type="enable"> + <condition setting="videoplayer.usevaapi" operator="is">true</condition> + </dependency> + </dependencies> + <level>3</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.prefervaapirender" type="boolean" parent="videoplayer.usevaapi" label="13457" help="36433"> + <requirement>HAVE_LIBVA</requirement> + <visible>false</visible> + <dependencies> + <dependency type="enable"> + <condition setting="videoplayer.usevaapi" operator="is">true</condition> + </dependency> + </dependencies> + <level>3</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.useprimedecoder" type="boolean" label="13430" help="36172"> + <requirement>HAS_GLES</requirement> + <visible>false</visible> + <level>2</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.useprimedecoderforhw" type="boolean" parent="videoplayer.useprimedecoder" label="13438" help="36172"> + <requirement>HAS_GLES</requirement> + <visible>false</visible> + <dependencies> + <dependency type="enable"> + <condition setting="videoplayer.useprimedecoder" operator="is">true</condition> + </dependency> + </dependencies> + <level>3</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.useprimerenderer" type="integer" label="13462" help="13463"> + <requirement>HAS_GLES</requirement> + <visible>false</visible> + <level>2</level> + <default>1</default> + <constraints> + <options> + <option label="13464">0</option> <!-- DIRECT --> + <option label="13465">1</option> <!-- GLES --> + </options> + </constraints> + <control type="spinner" format="string" /> + </setting> + </group> + </category> + </section> + <section id="system"> + <category id="display"> + <group id="1"> + <setting id="videoscreen.fakefullscreen"> + <visible>false</visible> + </setting> + <setting id="videoscreen.hwscalingfilter" type="boolean" label="39151" help="39152"> + <visible>false</visible> + <level>3</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videoscreen.limitguisize" type="integer" label="37021" help="36548"> + <visible>false</visible> + <level>3</level> + <default>0</default> + <constraints> + <options> + <option label="37030">0</option> <!-- Unlimited --> + <option label="37028">1</option> <!-- 720 --> + <option label="13466">2</option> <!-- 1080 / 720 (>30Hz) --> + <option label="37046">3</option> <!-- 1080 --> + <option label="13467">4</option> <!-- Unlimited / 1080 (>30Hz) --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="videoscreen.limitedrange" type="boolean" label="36042" help="36359"> + <level>3</level> + <default>false</default> + <control type="toggle" /> + </setting> + </group> + </category> + <category id="input"> + <group id="4" label="35150"> + <setting id="input.libinputkeyboardlayout" type="string" label="407" help="36436"> + <level>0</level> + <default>us</default> + <visible>false</visible> + <constraints> + <options>libinputkeyboardlayout</options> + </constraints> + <control type="list" format="string"> + <multiselect>false</multiselect> + </control> + </setting> + </group> + </category> + </section> +</settings> diff --git a/system/settings/settings.xml b/system/settings/settings.xml new file mode 100755 index 0000000..0898ee7 --- /dev/null +++ b/system/settings/settings.xml @@ -0,0 +1,4059 @@ +<?xml version="1.0" encoding="utf-8" ?> +<settings version="1"> + <section id="player" label="14200" help="38100"> + <category id="videoplayer" label="14215" help="38103"> + <group id="1" label="14230"> + <setting id="videoplayer.autoplaynextitem" type="list[integer]" label="13433" help="36152"> + <constraints> + <options> + <option label="20389">0</option> <!-- musicvideos --> + <option label="20343">1</option> <!-- tvshows --> + <option label="20360">2</option> <!-- episodes --> + <option label="20342">3</option> <!-- movies --> + <option label="21345">4</option> <!-- uncategorized --> + </options> + <delimiter>,</delimiter> + </constraints> + <level>0</level> + <default></default> + <control type="list" format="string"> + <multiselect>true</multiselect> + <hidevalue>false</hidevalue> + </control> + </setting> + <setting id="videoplayer.seeksteps" type="list[integer]" label="13556" help="37042"> + <level>1</level> + <default>-600,-300,-180,-60,-30,-10,10,30,60,180,300,600</default> + <constraints> + <options>videoseeksteps</options> + <delimiter>,</delimiter> + <minimumitems>2</minimumitems> + </constraints> + <control type="list" format="string"> + <multiselect>true</multiselect> + </control> + </setting> + <setting id="videoplayer.seekdelay" type="integer" label="13557" help="37043"> + <level>1</level> + <default>750</default> + <constraints> + <minimum label="231">0</minimum> <!-- None --> + <step>250</step> + <maximum>3000</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14046</formatlabel> + </control> + </setting> + </group> + <group id="2" label="19177"> + <setting id="videoplayer.adjustrefreshrate" type="integer" label="170" help="36164"> + <level>1</level> + <default>0</default> <!-- ADJUST_REFRESHRATE_OFF --> + <constraints> + <options> + <option label="351">0</option> <!-- ADJUST_REFRESHRATE_OFF --> + <option label="36035">1</option> <!-- ADJUST_REFRESHRATE_ALWAYS --> + <option label="36036">2</option> <!-- ADJUST_REFRESHRATE_ON_STARTSTOP --> + <option label="36050">3</option> <!-- ADJUST_REFRESHRATE_ON_START --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="videoplayer.usedisplayasclock" type="boolean" label="13510" help="36166"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.errorinaspect" type="integer" label="22021" help="36170"> + <level>2</level> + <default>0</default> + <constraints> + <minimum label="351">0</minimum> + <step>1</step> + <maximum>20</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14047</formatlabel> + </control> + </setting> + <setting id="videoplayer.stretch43" type="integer" label="173" help="36171"> + <level>2</level> + <default>0</default> <!-- ViewModeNormal --> + <constraints> + <options> + <option label="630">0</option> <!-- ViewModeNormal --> + <option label="633">3</option> <!-- ViewModeWideZoom --> + <option label="634">4</option> <!-- ViewModeStretch16x9 --> + <option label="644">7</option> <!-- ViewModeStretch16x9 - nonlinear --> + <option label="631">1</option> <!-- ViewModeZoom --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + </group> + <group id="3" label="14231"> + <setting id="videoplayer.rendermethod" type="integer" label="13415" help="36153"> + <level>2</level> + <default>0</default> <!-- RENDER_METHOD_AUTO --> + <constraints> + <options>rendermethods</options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="videoplayer.hqscalers" type="integer" parent="videoplayer.rendermethod" label="13435" help="36154"> + <level>2</level> + <default>20</default> + <constraints> + <minimum>0</minimum> + <step>10</step> + <maximum>100</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14047</formatlabel> + </control> + </setting> + <setting id="videoplayer.usemediacodecsurface" type="boolean" label="13440" help="36544"> + <requirement>HAS_MEDIACODEC</requirement> + <level>2</level> + <default>true</default> + <updates> + <update type="change" /> + </updates> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usemediacodec" type="boolean" label="13439" help="36544"> + <requirement>HAS_MEDIACODEC</requirement> + <level>2</level> + <default>true</default> + <updates> + <update type="change" /> + </updates> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usedxva2" type="boolean" label="13427" help="36158"> + <requirement>HasDXVA2</requirement> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.usevtb" type="boolean" label="13429" help="36160"> + <requirement>HasVTB</requirement> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="winsystem.ishdrdisplay" type="boolean" label="13436" help="36299"> + <dependencies> + <dependency type="visible"> + <condition on="property" name="ishdrdisplay" /> + </dependency> + </dependencies> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + </group> + <group id="4" label="14232"> + <setting id="videoplayer.stereoscopicplaybackmode" type="integer" label="36520" help="36537"> + <level>2</level> + <default>0</default> + <constraints> + <options> + <option label="36521">0</option> <!-- ASK --> + <option label="36524">1</option> <!-- Preferred mode --> + <option label="36509">2</option> <!-- Monoscopic / 2D --> + <option label="36028">100</option> <!-- Ignore --> + </options> + </constraints> + <control type="spinner" format="integer" delayed="true"/> + </setting> + <setting id="videoplayer.quitstereomodeonstop" type="boolean" label="36526" help="36538"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + </group> + <group id="5" label="14233"> + <setting id="videoplayer.teletextenabled" type="boolean" label="23050" help="36174"> + <level>3</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videoplayer.teletextscale" type="boolean" parent="videoplayer.teletextenabled" label="23055" help="36175"> + <level>3</level> + <default>true</default> + <dependencies> + <dependency type="enable" setting="videoplayer.teletextenabled" operator="is">true</dependency> + </dependencies> + <control type="toggle" /> + </setting> + </group> + </category> + <category id="musicplayer" label="14216" help="38104"> + <group id="1" label="14230"> + <setting id="musicplayer.autoplaynextitem" type="boolean" label="489" help="36265"> + <level>0</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="musicplayer.queuebydefault" type="boolean" label="14084" help="36266"> + <level>0</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="musicplayer.seeksteps" type="list[integer]" label="13556" help="37042"> + <level>1</level> + <default>-60,-30,-10,10,30,60</default> + <constraints> + <options>videoseeksteps</options> + <delimiter>,</delimiter> + <minimumitems>2</minimumitems> + </constraints> + <control type="list" format="string"> + <multiselect>true</multiselect> + </control> + </setting> + <setting id="musicplayer.seekdelay" type="integer" label="13557" help="37043"> + <level>1</level> + <default>750</default> + <constraints> + <minimum label="231">0</minimum> <!-- None --> + <step>250</step> + <maximum>3000</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14046</formatlabel> + </control> + </setting> + </group> + <group id="2" label="19177"> + <setting id="musicplayer.crossfade" type="integer" label="13314" help="36271"> + <level>1</level> + <default>0</default> + <constraints> + <minimum label="351">0</minimum> + <step>1</step> + <maximum>15</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14045</formatlabel> + </control> + </setting> + <setting id="musicplayer.crossfadealbumtracks" type="boolean" parent="musicplayer.crossfade" label="13400" help="36272"> + <level>1</level> + <default>true</default> + <dependencies> + <dependency type="enable" setting="musicplayer.crossfade" operator="!is">0</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="musicplayer.visualisation" type="addon" label="250" help="36273"> + <level>0</level> + <default></default> + <constraints> + <addontype>xbmc.player.musicviz</addontype> + <allowempty>true</allowempty> + </constraints> + <control type="button" format="addon"> + <show more="true" details="true">installed</show> + </control> + </setting> + <setting id="musicplayer.replaygaintype" type="integer" label="638" help="36267"> + <level>3</level> + <default>1</default> <!-- REPLAY_GAIN_ALBUM --> + <constraints> + <options> + <option label="351">0</option> <!-- REPLAY_GAIN_NONE --> + <option label="639">2</option> <!-- REPLAY_GAIN_TRACK --> + <option label="640">1</option> <!-- REPLAY_GAIN_ALBUM --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="musicplayer.replaygainpreamp" type="integer" parent="musicplayer.replaygaintype" label="641" help="36268"> + <level>3</level> + <default>89</default> + <constraints> + <minimum>77</minimum> + <step>1</step> + <maximum>101</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14050</formatlabel> + </control> + <dependencies> + <dependency type="enable" setting="musicplayer.replaygaintype" operator="!is">0</dependency> + </dependencies> + </setting> + <setting id="musicplayer.replaygainnogainpreamp" type="integer" parent="musicplayer.replaygaintype" label="642" help="36269"> + <level>3</level> + <default>89</default> + <constraints> + <minimum>77</minimum> + <step>1</step> + <maximum>101</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14050</formatlabel> + </control> + <dependencies> + <dependency type="enable" setting="musicplayer.replaygaintype" operator="!is">0</dependency> + </dependencies> + </setting> + <setting id="musicplayer.replaygainavoidclipping" type="boolean" parent="musicplayer.replaygaintype" label="643" help="36270"> + <level>3</level> + <default>false</default> + <control type="toggle" /> + <dependencies> + <dependency type="enable" setting="musicplayer.replaygaintype" operator="!is">0</dependency> + </dependencies> + </setting> + </group> + </category> + <category id="discs" label="14087" help="36193"> + <group id="1" label="446"> + <setting id="dvds.autorun" type="boolean" label="14088" help="36194"> + <requirement>HAS_DVD_DRIVE</requirement> + <level>0</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="dvds.playerregion" type="integer" label="21372" help="36195"> + <level>1</level> + <default>0</default> + <constraints> + <minimum label="351">0</minimum> + <step>1</step> + <maximum>8</maximum> + </constraints> + <control type="spinner" format="string" /> + </setting> + <setting id="dvds.automenu" type="boolean" label="21882" help="36196"> + <level>2</level> + <default>false</default> + <control type="toggle" /> + </setting> + </group> + <group id="2" label="14234"> + <requirement>HAVE_LIBBLURAY</requirement> + <setting id="bluray.playerregion" type="integer" label="14121" help="38017"> + <level>1</level> + <default>1</default> <!-- region A --> + <constraints> + <options> + <option label="14122">1</option> <!-- region A --> + <option label="14123">2</option> <!-- region B --> + <option label="14124">4</option> <!-- region C --> + </options> + </constraints> + <control type="spinner" format="string" /> + </setting> + <setting id="disc.playback" type="integer" label="14102" help="37031"> + <level>1</level> + <default>0</default> <!-- default --> + <constraints> + <options> + <option label="14104">0</option> <!-- show simplified menu --> + <option label="25003">1</option> <!-- show disc menu --> + <option label="14103">2</option> <!-- play main movie --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + </group> + <group id="3" label="620"> + <setting id="audiocds.autoaction" type="integer" label="14097" help="36283"> + <requirement>HAS_DVD_DRIVE</requirement> + <level>1</level> + <default>0</default> <!-- AUTOCD_NONE --> + <constraints> + <options>audiocdactions</options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="audiocds.usecddb" type="boolean" label="227" help="36284"> + <requirement>HAS_DVD_DRIVE</requirement> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="audiocds.recordingpath" type="path" label="20000" help="36285"> + <requirement>HAS_CDDA_RIPPER</requirement> + <level>3</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <control type="button" format="path"> + <heading>657</heading> + </control> + </setting> + <setting id="audiocds.trackpathformat" type="string" label="13307" help="36286"> + <requirement>HAS_CDDA_RIPPER</requirement> + <level>3</level> + <default>%A/%A - %B/[%N. ][%A - ]%T</default> + <control type="edit" format="string"> + <heading>16016</heading> + </control> + </setting> + <setting id="audiocds.encoder" type="addon" label="621" help="36287"> + <requirement>HAS_CDDA_RIPPER</requirement> + <level>3</level> + <default>audioencoder.kodi.builtin.aac</default> + <constraints> + <addontype>kodi.audioencoder</addontype> + </constraints> + <control type="button" format="addon"> + <show more="true" details="true">installed</show> + </control> + </setting> + <setting id="audiocds.settings" parent="audiocds.encoder" type="action" label="21417" help="37025"> + <requirement>HAS_CDDA_RIPPER</requirement> + <level>3</level> + <dependencies> + <dependency type="enable"> + <condition on="property" name="AddonHasSettings" setting="audiocds.encoder" /> + </dependency> + </dependencies> + <control type="button" format="action" /> + </setting> + <setting id="audiocds.ejectonrip" type="boolean" label="14099" help="36291"> + <requirement>HAS_CDDA_RIPPER</requirement> + <level>3</level> + <default>true</default> + <control type="toggle" /> + </setting> + </group> + </category> + <category id="pictures" label="14217" help="38105"> + <group id="1" label="108"> + <setting id="slideshow.staytime" type="integer" label="12378" help="36312"> + <level>0</level> + <default>5</default> + <constraints> + <minimum>1</minimum> + <step>1</step> + <maximum>100</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14045</formatlabel> + </control> + </setting> + <setting id="slideshow.displayeffects" type="boolean" label="12379" help="36313"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="slideshow.shuffle" type="boolean" label="13319" help="36314"> + <level>0</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="slideshow.highqualitydownscaling" type="boolean" label="36619" help="36620"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + </group> + </category> + <category id="language" label="14218" help="38106"> + <group id="1" label="14221"> + <setting id="locale.audiolanguage" type="string" label="285" help="36119"> + <level>0</level> + <default>mediadefault</default> + <constraints> + <options>audiostreamlanguages</options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="videoplayer.preferdefaultflag" type="boolean" label="37040" help="37041"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + </group> + <group id="2" label="287"> + <setting id="locale.subtitlelanguage" type="string" label="286" help="36120"> + <level>0</level> + <default>original</default> + <constraints> + <options>subtitlestreamlanguages</options> + </constraints> + <control type="list" format="string" /> + </setting> + </group> + <group id="3" label="37032"> + <setting id="accessibility.audiovisual" type="boolean" label="37034" help="37035"> + <level>0</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="accessibility.audiohearing" type="boolean" label="37036" help="37037"> + <level>0</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="accessibility.subhearing" type="boolean" label="37038" help="37039"> + <level>0</level> + <default>false</default> + <control type="toggle" /> + </setting> + </group> + </category> + <category id="subtitles" label="287" help="37033"> + <group id="1" label="39186"> + <setting id="subtitles.align" type="integer" label="21460" help="36192"> + <level>2</level> + <default>2</default> <!-- Align::BOTTOM_OUTSIDE --> + <constraints> + <options> + <option label="21461">0</option> <!-- Align::MANUAL --> + <option label="21462">1</option> <!-- Align::BOTTOM_INSIDE --> + <option label="21463">2</option> <!-- Align::BOTTOM_OUTSIDE --> + <option label="21464">3</option> <!-- Align::TOP_INSIDE --> + <option label="21465">4</option> <!-- Align::TOP_OUTSIDE --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="subtitles.fontname" type="string" label="14089" help="36185"> + <level>1</level> + <default>DEFAULT</default> + <constraints> + <options>subtitlesfonts</options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="subtitles.fontsize" type="integer" label="289" help="36186"> + <level>3</level> + <default>42</default> <!-- in pixels --> + <constraints> + <minimum>12</minimum> + <step>2</step> + <maximum>74</maximum> + </constraints> + <dependencies> + <dependency type="update" setting="subtitles.fontname" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="subtitles.style" type="integer" label="736" help="36187"> + <level>3</level> + <default>0</default> <!-- FontStyle::NORMAL --> + <constraints> + <options> + <option label="738">0</option> <!-- FontStyle::NORMAL --> + <option label="739">1</option> <!-- FontStyle::BOLD --> + <option label="740">2</option> <!-- FontStyle::ITALIC --> + <option label="741">3</option> <!-- FontStyle::BOLD_ITALIC --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="subtitles.colorpick" type="string" label="737" help="36188"> + <level>3</level> + <default>FFFFFFFF</default> <!-- White --> + <control type="colorbutton" /> + </setting> + <setting id="subtitles.opacity" type="integer" label="752" help="36295"> + <level>3</level> + <default>100</default> + <control type="slider" format="percentage" range="0,100" /> + </setting> + <setting id="subtitles.bordersize" type="integer" label="39159"> + <level>3</level> + <default>25</default> + <dependencies> + <dependency type="enable" setting="subtitles.backgroundtype" operator="!is">2</dependency> + </dependencies> + <control type="slider" format="percentage" range="0,100" /> + </setting> + <setting id="subtitles.bordercolorpick" type="string" label="39160"> + <level>3</level> + <default>FF000000</default> <!-- Black --> + <dependencies> + <dependency type="enable" setting="subtitles.backgroundtype" operator="!is">2</dependency> + </dependencies> + <control type="colorbutton" /> + </setting> + <setting id="subtitles.blur" type="integer" label="39173"> + <level>3</level> + <default>0</default> + <control type="slider" format="percentage" range="0,100" /> + </setting> + <setting id="subtitles.backgroundtype" type="integer" label="39165" help="39169"> + <level>3</level> + <default>0</default> <!-- BackgroundType::NONE --> + <constraints> + <options> + <option label="39188">0</option> <!-- BackgroundType::NONE --> + <option label="39166">1</option> <!-- BackgroundType::SHADOW --> + <option label="39167">2</option> <!-- BackgroundType::BOX --> + <option label="39168">3</option> <!-- BackgroundType::SQUAREBOX --> + </options> + </constraints> + <control type="list" format="integer" /> + </setting> + <setting id="subtitles.bgcolorpick" type="string" parent="subtitles.backgroundtype" label="745" help="36228"> + <level>3</level> + <default>FF000000</default> <!-- Black --> + <dependencies> + <dependency type="visible"> + <or> + <condition setting="subtitles.backgroundtype">2</condition> + <condition setting="subtitles.backgroundtype">3</condition> + </or> + </dependency> + </dependencies> + <control type="colorbutton" /> + </setting> + <setting id="subtitles.bgopacity" type="integer" parent="subtitles.backgroundtype" label="746" help="36230"> + <level>3</level> + <default>80</default> + <dependencies> + <dependency type="visible"> + <or> + <condition setting="subtitles.backgroundtype">2</condition> + <condition setting="subtitles.backgroundtype">3</condition> + </or> + </dependency> + </dependencies> + <control type="slider" format="percentage" range="0,100" /> + </setting> + <setting id="subtitles.shadowcolor" type="string" parent="subtitles.backgroundtype" label="39171"> + <level>3</level> + <default>FF000000</default> <!-- Black --> + <dependencies> + <dependency type="visible"> + <or> + <condition setting="subtitles.backgroundtype">1</condition> + <condition setting="subtitles.backgroundtype">2</condition> + </or> + </dependency> + </dependencies> + <control type="colorbutton" /> + </setting> + <setting id="subtitles.shadowopacity" type="integer" parent="subtitles.backgroundtype" label="39172"> + <level>3</level> + <default>100</default> + <dependencies> + <dependency type="visible"> + <or> + <condition setting="subtitles.backgroundtype">1</condition> + <condition setting="subtitles.backgroundtype">2</condition> + </or> + </dependency> + </dependencies> + <control type="slider" format="percentage" range="0,100" /> + </setting> + <setting id="subtitles.shadowsize" type="integer" parent="subtitles.backgroundtype" label="39170"> + <level>3</level> + <default>15</default> + <dependencies> + <dependency type="visible"> + <or> + <condition setting="subtitles.backgroundtype">1</condition> + <condition setting="subtitles.backgroundtype">2</condition> + </or> + </dependency> + </dependencies> + <control type="slider" format="percentage" range="0,100" /> + </setting> + <setting id="subtitles.marginvertical" type="number" label="39182" help="39183"> + <level>3</level> + <default>4.95</default> + <constraints> + <minimum>0</minimum> + <step>0.05</step> + <maximum>50</maximum> + </constraints> + <dependencies> + <dependency type="enable" on="property" operator="!is" name="isplaying" /> + </dependencies> + <control type="slider" format="percentage"> + <format>{:.2f} %</format> + </control> + </setting> + <setting id="subtitles.overridefonts" type="boolean" label="21368" help="36190"> + <level>3</level> + <default>false</default> + <dependencies> + <dependency type="enable" on="property" operator="!is" name="isplaying" /> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="subtitles.overridestyles" type="integer" label="39154" help="39155"> + <level>3</level> + <default>0</default> <!-- OverrideStyles::DISABLED --> + <constraints> + <options> + <option label="13106">0</option> <!-- OverrideStyles::DISABLED --> + <option label="39156">1</option> <!-- OverrideStyles::POSITIONS --> + <option label="39157">2</option> <!-- OverrideStyles::STYLES --> + <option label="39158">3</option> <!-- OverrideStyles::STYLES_POSITIONS --> + </options> + </constraints> + <dependencies> + <dependency type="enable" on="property" operator="!is" name="isplaying" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="subtitles.stereoscopicdepth" type="integer" label="36545" help="36546"> + <level>2</level> + <default>0</default> + <constraints> + <minimum>0</minimum> + <step>1</step> + <maximum>10</maximum> + </constraints> + <control type="spinner" format="integer" delayed="true"/> + </setting> + <setting id="subtitles.charset" type="string" label="735" help="36189"> + <level>1</level> + <default>DEFAULT</default> + <constraints> + <options>charsets</options> + </constraints> + <control type="list" format="string" /> + </setting> + </group> + <group id="3" label="39187"> + <setting id="subtitles.parsecaptions" type="boolean" label="24130" help="24131"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="subtitles.captionsalign" parent="subtitles.parsecaptions" type="integer" label="39161"> + <level>2</level> + <default>0</default> <!-- HorizontalAlign::LEFT --> + <constraints> + <options> + <option label="39162">0</option> <!-- HorizontalAlign::LEFT --> + <option label="39163">1</option> <!-- HorizontalAlign::CENTER --> + <option label="39164">2</option> <!-- HorizontalAlign::RIGHT --> + </options> + </constraints> + <dependencies> + <dependency type="visible" setting="subtitles.parsecaptions" operator="is">true</dependency> + </dependencies> + <control type="list" format="string" /> + </setting> + </group> + <group id="4" label="14235"> + <setting id="subtitles.languages" type="list[string]" label="24111" help="24112"> + <level>1</level> + <default>English</default> + <constraints> + <options>subtitledownloadlanguages</options> + <delimiter>,</delimiter> + <minimumitems>1</minimumitems> + </constraints> + <control type="list" format="string"> + <multiselect>true</multiselect> + </control> + </setting> + <setting id="subtitles.storagemode" type="integer" label="24115" help="24106"> + <level>2</level> + <default>0</default> + <constraints> + <options> + <option label="24124">0</option> <!-- SUBTITLE_STORAGEMODE_MOVIEPATH --> + <option label="24125">1</option> <!-- SUBTITLE_STORAGEMODE_CUSTOMPATH --> + </options> + </constraints> + <control type="list" format="integer" /> + </setting> + <setting id="subtitles.custompath" parent="subtitles.storagemode" type="path" label="21366" help="36191"> + <level>2</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + <writable>false</writable> + <sources> + <source>videos</source> + </sources> + </constraints> + <control type="button" format="path"> + <heading>657</heading> + </control> + </setting> + <setting id="subtitles.pauseonsearch" type="boolean" label="24105" help="24123"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="subtitles.downloadfirst" type="boolean" label="24126" help="24127"> + <level>2</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="subtitles.tv" type="addon" label="24116" help="24117"> + <level>1</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + <addontype>xbmc.subtitle.module</addontype> + </constraints> + <control type="button" format="addon"> + <show more="true" details="true">installed</show> + </control> + </setting> + <setting id="subtitles.movie" type="addon" label="24118" help="24119"> + <level>1</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + <addontype>xbmc.subtitle.module</addontype> + </constraints> + <control type="button" format="addon"> + <show more="true" details="true">installed</show> + </control> + </setting> + </group> + </category> + </section> + <section id="media" label="14211" help="38101"> + <category id="library" label="14202" help="39004"> + <group id="1" label="14226"> + <setting id="source.videos" type="action" label="14242" help="39005"> + <level>1</level> + <control type="button" format="action" /> + </setting> + <setting id="source.music" type="action" label="14243" help="39006"> + <level>1</level> + <control type="button" format="action" /> + </setting> + <setting id="source.pictures" type="action" label="14244" help="39007"> + <level>1</level> + <control type="button" format="action" /> + </setting> + </group> + <group id="2" label="14236"> + <setting id="videolibrary.updateonstartup" type="boolean" label="14245" help="36146"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="videolibrary.backgroundupdate" type="boolean" label="14246" help="36147"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="videolibrary.cleanup" type="action" label="14247" help="36148"> + <level>2</level> + <control type="button" format="action" /> + </setting> + <setting id="videolibrary.export" type="action" label="14248" help="36149"> + <level>2</level> + <control type="button" format="action" /> + </setting> + <setting id="videolibrary.import" type="action" label="14249" help="36150"> + <level>2</level> + <control type="button" format="action" /> + </setting> + </group> + <group id="3" label="14237"> + <setting id="musiclibrary.updateonstartup" type="boolean" label="14245" help="36259"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="musiclibrary.backgroundupdate" type="boolean" label="14246" help="36147"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="musiclibrary.cleanup" type="action" label="14247" help="36148"> + <level>2</level> + <control type="button" format="action" /> + </setting> + <setting id="musiclibrary.export" type="action" label="14248" help="36262"> + <level>2</level> + <control type="button" format="action" /> + </setting> + <!-- Hidden settings edited using CGUIDialogMusicExportSettings --> + <setting id="musiclibrary.exportfiletype" type="integer" label="38304" help=""> + <level>4</level> + <default>0</default> + </setting> + <setting id="musiclibrary.exportfolder" type="string" label="38305" help=""> + <level>4</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + </setting> + <setting id="musiclibrary.exportitems" type="integer" label="" help=""> + <level>4</level> + <default>48</default> <!-- Albums + Album Artists --> + </setting> + <setting id="musiclibrary.exportunscraped" type="boolean" label="" help=""> + <level>4</level> + <default>false</default> + </setting> + <setting id="musiclibrary.exportoverwrite" type="boolean" label="" help=""> + <level>4</level> + <default>false</default> + </setting> + <setting id="musiclibrary.exportartwork" type="boolean" label="" help=""> + <level>4</level> + <default>false</default> + </setting> + <setting id="musiclibrary.exportskipnfo" type="boolean" label="" help=""> + <level>4</level> + <default>false</default> + </setting> + <setting id="musiclibrary.import" type="action" label="14249" help="36263"> + <level>2</level> + <control type="button" format="action" /> + </setting> + </group> + </category> + <category id="filelists" label="16000" help="36121"> + <group id="1" label="593"> + <setting id="filelists.showparentdiritems" type="boolean" label="13306" help="36122"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="filelists.ignorethewhensorting" type="boolean" label="13399" help="36124"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + </group> + <group id="2" label="744"> + <setting id="filelists.showextensions" type="boolean" label="497" help="36123"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="filelists.showaddsourcebuttons" type="boolean" label="21382" help="36126"> + <level>1</level> + <default>true</default> + <dependencies> + <dependency type="enable"> + <or> + <condition on="property" name="ProfileCanWriteSources" /> + <condition on="property" name="IsMasterUser" /> + </or> + </dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="filelists.showhidden" type="boolean" label="21330" help="36127"> + <level>2</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="filelists.allowfiledeletion" type="boolean" label="14071" help="36125"> + <level>2</level> + <default>false</default> + <dependencies> + <dependency type="enable"> + <or> + <condition on="property" operator="!is" name="ProfileHasFilesLocked" /> + <condition on="property" name="IsMasterUser" /> + </or> + </dependency> + </dependencies> + <control type="toggle" /> + </setting> + </group> + </category> + <category id="video" label="14215" help="38107"> + <group id="1" label="593"> + <setting id="myvideos.selectaction" type="integer" label="22079" help="36177"> + <level>0</level> + <default>1</default> <!-- SELECT_ACTION_PLAY_OR_RESUME --> + <constraints> + <options> + <option label="22080">0</option> <!-- SELECT_ACTION_CHOOSE --> + <option label="208">1</option> <!-- SELECT_ACTION_PLAY_OR_RESUME --> + <option label="13404">2</option> <!-- SELECT_ACTION_RESUME --> + <option label="22081">3</option> <!-- SELECT_ACTION_INFO --> + <option label="13347">7</option> <!-- SELECT_ACTION_QUEUE --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="myvideos.usetags" type="boolean" label="21343" help="21344"> + <level>2</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="myvideos.extractflags" type="boolean" label="20433" help="36178"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="myvideos.extractchapterthumbs" type="boolean" label="37044" help="37045"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + </group> + <group id="2" label="744"> + <setting id="myvideos.stackvideos" type="boolean" label="20435" help="36182"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="myvideos.replacelabels" type="boolean" label="20419" help="36179"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + </group> + <group id="3" label="14022"> + <setting id="videolibrary.showallitems" type="boolean" label="38011" help="38012"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videolibrary.showunwatchedplots" type="list[integer]" label="20369" help="36141"> + <level>0</level> + <default>0,1,2</default> <!-- Show plot for both --> + <constraints> + <options> + <option label="39115">0</option> <!-- Show plot for unwatched movies only --> + <option label="39116">1</option> <!-- Show plot for unwatched tv show episodes only --> + <option label="39114">2</option> <!-- Show thumb for unwatched tv show episodes only --> + </options> + <delimiter>,</delimiter> + </constraints> + <control type="list" format="string"> + <multiselect>true</multiselect> + <hidevalue>false</hidevalue> + </control> + </setting> + <setting id="videolibrary.groupmoviesets" type="boolean" label="20458" help="36145"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="videolibrary.groupsingleitemsets" type="boolean" label="20470" help="36157"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="myvideos.flatten" type="boolean" label="20456" help="36183"> + <level>2</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="videolibrary.flattentvshows" type="integer" label="20412" help="36144"> + <level>2</level> + <default>1</default> <!-- if only one season --> + <constraints> + <options> + <option label="20420">0</option> <!-- never --> + <option label="20421">1</option> <!-- if only one season --> + <option label="20422">2</option> <!-- always --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="videolibrary.showemptytvshows" type="boolean" label="20471" help="36163"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="videolibrary.tvshowsselectfirstunwatcheditem" type="integer" label="21416" help="21466"> + <level>2</level> + <default>0</default> <!-- Never --> + <constraints> + <options> + <option label="20420">0</option> <!-- Never --> + <option label="21471">1</option> <!-- On first entry --> + <option label="20422">2</option> <!-- Always --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="videolibrary.tvshowsincludeallseasonsandspecials" type="integer" parent="videolibrary.tvshowsselectfirstunwatcheditem" label="21472" help="21473"> + <level>2</level> + <default>0</default> <!-- Neither --> + <constraints> + <options> + <option label="21474">0</option> <!-- Neither --> + <option label="21475">1</option> <!-- Both --> + <option label="21476">2</option> <!-- Just All Seasons --> + <option label="21477">3</option> <!-- Just Specials --> + </options> + </constraints> + <dependencies> + <dependency type="enable" setting="videolibrary.tvshowsselectfirstunwatcheditem" operator="!is">0</dependency> <!-- Never --> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="videolibrary.moviesetsfolder" type="path" label="20226" help="36300"> + <level>1</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + <sources> + <source>files</source> + <source>pictures</source> + <source>videos</source> + </sources> + <writable>false</writable> + </constraints> + <control type="button" format="path"> + <heading>657</heading> + </control> + </setting> + <setting id="videolibrary.musicvideosallperformers" type="boolean" label="20472" help="36308"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + </group> + <group id="4" label="39123"> + <!-- Hidden setting indicating video art settings have been migrated from old advancedsettings.xml format--> + <setting id="videolibrary.artsettingsupdated" type="boolean" label="0" help=""> + <level>4</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="videolibrary.artworklevel" type="integer" label="39137" help="39138"> + <level>1</level> + <default>0</default> + <constraints> + <options> + <option label="39140">0</option> <!-- VIDEOLIBRARY_ARTWORK_LEVEL_ALL --> + <option label="39141">1</option> <!-- VIDEOLIBRARY_ARTWORK_LEVEL_BASIC --> + <option label="39142">2</option> <!-- VIDEOLIBRARY_ARTWORK_LEVEL_CUSTOM --> + <option label="231">3</option> <!-- VIDEOLIBRARY_ARTWORK_LEVEL_NONE --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="videolibrary.movieartwhitelist" type="list[string]" parent="videolibrary.artworklevel" label="39143" help="39144"> + <level>2</level> + <default></default> + <constraints> + <options> + <option>clearart</option> + <option>discart</option> + <option>keyart</option> + <option>banner</option> + <option>landscape</option> + <option>clearlogo</option> + </options> + <delimiter>, </delimiter> + <allownewoption>true</allownewoption> + </constraints> + <dependencies> + <dependency type="visible" setting="videolibrary.artworklevel" operator="is">2</dependency> + </dependencies> + <control type="list" format="string"> + <multiselect>true</multiselect> + <addbuttonlabel>13516</addbuttonlabel> + </control> + </setting> + <setting id="videolibrary.tvshowartwhitelist" type="list[string]" parent="videolibrary.artworklevel" label="39145" help="39146"> + <level>2</level> + <default></default> + <constraints> + <options> + <option>clearart</option> + <option>discart</option> + <option>keyart</option> + <option>banner</option> + <option>landscape</option> + <option>clearlogo</option> + </options> + <delimiter>, </delimiter> + <allownewoption>true</allownewoption> + </constraints> + <dependencies> + <dependency type="visible" setting="videolibrary.artworklevel" operator="is">2</dependency> + </dependencies> + <control type="list" format="string"> + <multiselect>true</multiselect> + <addbuttonlabel>13516</addbuttonlabel> + </control> + </setting> + <setting id="videolibrary.episodeartwhitelist" type="list[string]" parent="videolibrary.artworklevel" label="39147" help="39148"> + <level>2</level> + <default></default> + <constraints> + <options> + <option>fanart</option> + </options> + <delimiter>, </delimiter> + <allownewoption>true</allownewoption> + </constraints> + <dependencies> + <dependency type="visible" setting="videolibrary.artworklevel" operator="is">2</dependency> + </dependencies> + <control type="list" format="string"> + <multiselect>true</multiselect> + <addbuttonlabel>13516</addbuttonlabel> + </control> + </setting> + <setting id="videolibrary.musicvideoartwhitelist" type="list[string]" parent="videolibrary.artworklevel" label="39149" help="39150"> + <level>2</level> + <default></default> + <constraints> + <options> + <option>clearart</option> + <option>discart</option> + <option>banner</option> + <option>landscape</option> + <option>clearlogo</option> + </options> + <delimiter>, </delimiter> + <allownewoption>true</allownewoption> + </constraints> + <dependencies> + <dependency type="visible" setting="videolibrary.artworklevel" operator="is">2</dependency> + </dependencies> + <control type="list" format="string"> + <multiselect>true</multiselect> + <addbuttonlabel>13516</addbuttonlabel> + </control> + </setting> + <setting id="videolibrary.actorthumbs" type="boolean" label="20402" help="36143"> + <level>2</level> + <default>true</default> + <dependencies> + <dependency type="visible" setting="videolibrary.artworklevel" operator="!is">3</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="myvideos.extractthumb" type="boolean" label="38190" help="36180"> + <level>1</level> + <default>true</default> + <dependencies> + <dependency type="visible" setting="videolibrary.artworklevel" operator="!is">3</dependency> + </dependencies> + <control type="toggle" /> + </setting> + </group> + </category> + <category id="music" label="14216" help="38108"> + <group id="1" label="39121"> + <setting id="musiclibrary.showallitems" type="boolean" label="38011" help="38012"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="musiclibrary.showcompilationartists" type="boolean" label="13414" help="36255"> + <level>0</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="musiclibrary.showdiscs" type="boolean" label="13522" help="13523"> + <level>0</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="musiclibrary.useartistsortname" type="boolean" label="20228" help="36294"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="musiclibrary.useoriginaldate" type="boolean" label="13524" help="13525"> + <level>2</level> + <default>false</default> + <control type="toggle" /> + </setting> + </group> + <group id="2" label="39122"> + <setting id="musiclibrary.downloadinfo" type="boolean" label="20192" help="36256"> + <level>2</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="musiclibrary.artistsfolder" type="path" label="20223" help="36293"> + <level>1</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <control type="button" format="path"> + <heading>657</heading> + </control> + </setting> + <setting id="musiclibrary.albumsscraper" type="addon" label="20193" help="36257"> + <level>1</level> + <default>metadata.generic.albums</default> + <constraints> + <addontype>xbmc.metadata.scraper.albums</addontype> + </constraints> + <control type="button" format="addon"> + <show more="true" details="true">installed</show> + </control> + </setting> + <setting id="musiclibrary.artistsscraper" type="addon" label="20194" help="36258"> + <level>1</level> + <default>metadata.generic.artists</default> + <constraints> + <addontype>xbmc.metadata.scraper.artists</addontype> + </constraints> + <control type="button" format="addon"> + <show more="true" details="true">installed</show> + </control> + </setting> + <setting id="musiclibrary.overridetags" type="boolean" label="20220" help="20221"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + </group> + <group id="3" label="39123"> + <!-- Hidden setting indicating music art settings have been migrated from old advancedsettings.xml format--> + <setting id="musiclibrary.artsettings" type="boolean" label="0" help=""> + <level>4</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="musiclibrary.artworklevel" type="integer" label="39137" help="39138"> + <level>1</level> + <default>0</default> + <constraints> + <options> + <option label="39140">0</option> <!-- MUSICLIBRARY_ARTWORK_LEVEL_ALL --> + <option label="39141">1</option> <!-- MUSICLIBRARY_ARTWORK_LEVEL_BASIC --> + <option label="39142">2</option> <!-- MUSICLIBRARY_ARTWORK_LEVEL_CUSTOM --> + <option label="231">3</option> <!-- MUSICLIBRARY_ARTWORK_LEVEL_NONE --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="musiclibrary.usealllocalart" type="boolean" parent="musiclibrary.artworklevel" label="39127" help="39128"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + <dependencies> + <dependency type="visible" setting="musiclibrary.artworklevel" operator="is">2</dependency> + </dependencies> + </setting> + <setting id="musiclibrary.useallremoteart" type="boolean" parent="musiclibrary.artworklevel" label="39129" help="39130"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + <dependencies> + <dependency type="visible" setting="musiclibrary.artworklevel" operator="is">2</dependency> + </dependencies> + </setting> + <setting id="musiclibrary.artistartwhitelist" type="list[string]" parent="musiclibrary.artworklevel" label="39131" help="39132"> + <level>1</level> + <default></default> + <constraints> + <options> + <option>banner</option> + <option>clearart</option> + <option>clearlogo</option> + <option>landscape</option> + <option>fanart</option> + </options> + <delimiter>, </delimiter> + <allownewoption>true</allownewoption> + </constraints> + <dependencies> + <dependency type="visible" setting="musiclibrary.artworklevel" operator="is">2</dependency> + <dependency type="enable"> + <or> + <condition setting="musiclibrary.usealllocalart" operator="is" >false</condition> + <condition setting="musiclibrary.useallremoteart" operator="is">false</condition> + </or> + </dependency> + </dependencies> + <control type="list" format="string"> + <multiselect>true</multiselect> + <addbuttonlabel>13516</addbuttonlabel> + </control> + </setting> + <setting id="musiclibrary.albumartwhitelist" type="list[string]" parent="musiclibrary.artworklevel" label="39133" help="39134"> + <level>1</level> + <default></default> + <constraints> + <options> + <option>discart</option> + <option>back</option> + <option>spine</option> + <option>3dcase</option> + <option>3dflat</option> + <option>3dface</option> + </options> + <delimiter>, </delimiter> + <allownewoption>true</allownewoption> + </constraints> + <dependencies> + <dependency type="visible" setting="musiclibrary.artworklevel" operator="is">2</dependency> + <dependency type="enable"> + <or> + <condition setting="musiclibrary.usealllocalart" operator="is" >false</condition> + <condition setting="musiclibrary.useallremoteart" operator="is">false</condition> + </or> + </dependency> + </dependencies> + <control type="list" format="string"> + <multiselect>true</multiselect> + <addbuttonlabel>13516</addbuttonlabel> + </control> + </setting> + <setting id="musiclibrary.musicthumbs" type="list[string]" label="39135" help="39136"> + <level>3</level> + <default>folder.jpg, cover.jpg, cover.jpeg, thumb.jpg</default> + <constraints> + <options> + <option>folder.jpg</option> + <option>cover.jpg</option> + <option>cover.jpeg</option> + <option>thumb.jpg</option> + </options> + <delimiter>, </delimiter> + <allowempty>true</allowempty> + <allownewoption>true</allownewoption> + </constraints> + <dependencies> + <dependency type="enable" setting="musiclibrary.artworklevel" operator="!is">3</dependency> + </dependencies> + <control type="list" format="string"> + <multiselect>true</multiselect> + </control> + </setting> + <setting id="musiclibrary.preferonlinealbumart" type="boolean" label="20224" help="20225"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + <dependencies> + <dependency type="enable" setting="musiclibrary.artworklevel" operator="!is">3</dependency> + </dependencies> + </setting> + </group> + <group id="4" label="128"> + <setting id="musicfiles.selectaction" type="boolean" label="12381" help="38112"> + <level>0</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="musicfiles.trackformat" type="string" label="13307" help="36275"> + <level>3</level> + <default>[%N. ]%A - %T</default> + <control type="edit" format="string"> + <heading>16016</heading> + </control> + </setting> + <setting id="musicfiles.nowplayingtrackformat" type="string" label="13307" help="36277"> + <level>4</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <control type="edit" format="string"> + <heading>16016</heading> + </control> + </setting> + <setting id="musicfiles.librarytrackformat" type="string" label="13307" help="36279"> + <level>4</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <control type="edit" format="string"> + <heading>16016</heading> + </control> + </setting> + <setting id="musicfiles.findremotethumbs" type="boolean" label="14059" help="36281"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="musicfiles.usetags" type="boolean" label="39125" help="36274"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + </group> + </category> + <category id="mymusic" label="0" help="0"> + <group id="1"> + <setting id="mymusic.songthumbinvis" type="boolean" label="0" help="36302"> + <level>4</level> + <default>false</default> + </setting> + <setting id="mymusic.defaultlibview" type="string" label="0" help="36303"> + <level>4</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + </setting> + </group> + </category> + <category id="pictures" label="14217" help="38109"> + <group id="1" label="744"> + <setting id="pictures.usetags" type="boolean" label="38207" help="38208"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="pictures.generatethumbs" type="boolean" label="13360" help="36307"> + <level>0</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="pictures.showvideos" type="boolean" label="22022" help="36309"> + <level>0</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="pictures.displayresolution" type="integer" label="169" help="36310"> + <visible>false</visible> <!-- not properly respected --> + <level>0</level> + <default>14</default> <!-- RES_AUTORES --> + <constraints> + <options>resolutions</options> + </constraints> + <control type="spinner" format="string" /> + </setting> + </group> + </category> + <category id="scrapers" label="0" help="36197"> + <visible>false</visible> + <group id="1"> + <setting id="scrapers.moviesdefault" type="addon" label="21413" help="36198"> + <level>4</level> + <default>metadata.themoviedb.org.python</default> + <constraints> + <addontype>xbmc.metadata.scraper.movies</addontype> + </constraints> + </setting> + <setting id="scrapers.tvshowsdefault" type="addon" label="21414" help="36199"> + <level>4</level> + <default>metadata.tvshows.themoviedb.org.python</default> + <constraints> + <addontype>xbmc.metadata.scraper.tvshows</addontype> + </constraints> + </setting> + <setting id="scrapers.musicvideosdefault" type="addon" label="21415" help="36200"> + <level>4</level> + <default>metadata.local</default> + <constraints> + <addontype>xbmc.metadata.scraper.musicvideos</addontype> + </constraints> + <updates> + <update type="change" /> + </updates> + </setting> + </group> + </category> + </section> + <section id="pvr" label="14204" help="36201"> + <category id="pvrmanager" label="128" help="36202"> + <group id="1" label="19279"> + <setting id="pvrmanager.addons" type="action" label="19345" help="19346"> + <level>1</level> + <control type="button" format="action" /> + </setting> + <setting id="pvrclient.menuhook" type="action" label="19280" help="36252"> + <level>1</level> + <control type="button" format="action" /> + </setting> + <setting id="pvrmanager.clientpriorities" type="action" label="19240" help="36210"> + <level>2</level> + <dependencies> + <dependency type="visible" on="property" name="pvrsettingvisible" setting="pvrmanager.clientpriorities" operator="is">true</dependency> + </dependencies> + <control type="button" format="action" /> + </setting> + </group> + <group id="2" label="14303"> + <setting id="pvrmanager.resetdb" type="action" label="19185" help="36209"> + <level>1</level> + <control type="button" format="action" /> + </setting> + </group> + </category> + <category id="pvrmenu" label="14301" help="36211"> + <group id="1" label="128"> + <setting id="pvrmanager.syncchannelgroups" type="boolean" label="19221" help="36204"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="pvrmanager.backendchannelorder" type="boolean" label="19231" help="36205"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="pvrmanager.usebackendchannelnumbersalways" type="boolean" label="19329" help="36358"> + <level>3</level> + <dependencies> + <dependency type="visible" on="property" name="pvrsettingvisible" setting="pvrmanager.usebackendchannelnumbersalways" operator="is">true</dependency> + </dependencies> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="pvrmanager.usebackendchannelnumbers" type="boolean" label="19234" help="36206"> + <level>2</level> + <dependencies> + <dependency type="visible"> + <or> + <condition type="visible" on="property" name="pvrsettingvisible" setting="pvrmanager.usebackendchannelnumbers" operator="is">true</condition> + <condition setting="pvrmanager.usebackendchannelnumbersalways" operator="is">true</condition> + </or> + </dependency> + </dependencies> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="pvrmanager.startgroupchannelnumbersfromone" type="boolean" parent="pvrmanager.usebackendchannelnumbers" label="19316" help="36306"> + <level>2</level> + <dependencies> + <dependency type="visible" on="property" name="pvrsettingvisible" setting="pvrmanager.usebackendchannelnumbers" operator="is">true</dependency> + <dependency type="enable" setting="pvrmanager.usebackendchannelnumbers" operator="is">false</dependency> + </dependencies> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="pvrmanager.channelmanager" type="action" label="19199" help="36207"> + <level>1</level> + <control type="button" format="action" /> + </setting> + <setting id="pvrmanager.groupmanager" type="action" label="19048" help="36213"> + <level>1</level> + <control type="button" format="action" /> + </setting> + <setting id="pvrmanager.channelscan" type="action" label="19117" help="36208"> + <level>1</level> + <control type="button" format="action" /> + </setting> + </group> + <group id="2" label="14302"> + <setting id="pvrmenu.iconpath" type="path" label="19018" help="36216"> + <level>2</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + <writable>false</writable> + </constraints> + <control type="button" format="path"> + <heading>657</heading> + </control> + </setting> + <setting id="pvrmenu.searchicons" type="action" label="19167" help="36217"> + <level>2</level> + <dependencies> + <dependency type="enable"> + <and> + <condition setting="pvrmenu.iconpath" operator="!is"></condition> + </and> + </dependency> + </dependencies> + <control type="button" format="action" /> + </setting> + </group> + </category> + <category id="epg" label="22020" help="36218"> + <group id="1" label="128"> + <setting id="epg.pastdaystodisplay" type="integer" label="19229" help="36219"> + <level>2</level> + <default>1</default> + <constraints> + <minimum>0</minimum> + <step>1</step> + <maximum>31</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>17999</formatlabel> + </control> + </setting> + <setting id="epg.futuredaystodisplay" type="integer" label="19182" help="36220"> + <level>2</level> + <default>3</default> + <constraints> + <minimum>1</minimum> + <step>1</step> + <maximum>31</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>17999</formatlabel> + </control> + </setting> + <setting id="epg.selectaction" type="integer" label="22079" help="36424"> + <level>1</level> + <default>2</default> <!-- EPG_SELECT_ACTION_INFO --> + <constraints> + <options> + <option label="36425">0</option> <!-- EPG_SELECT_ACTION_CONTEXT_MENU --> + <option label="36426">1</option> <!-- EPG_SELECT_ACTION_SWITCH --> + <option label="36427">2</option> <!-- EPG_SELECT_ACTION_INFO --> + <option label="36428">3</option> <!-- EPG_SELECT_ACTION_RECORD --> + <option label="19096">5</option> <!-- EPG_SELECT_ACTION_SMART_SELECT --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="epg.hidenoinfoavailable" type="boolean" label="19268" help="36224"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + </group> + <group id="2" label="14303"> + <setting id="epg.epgupdate" type="integer" label="19071" help="36221"> + <level>2</level> + <default>120</default> + <constraints> + <minimum>15</minimum> + <step>15</step> + <maximum>2880</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14044</formatlabel> + </control> + </setting> + <setting id="epg.preventupdateswhileplayingtv" type="boolean" label="19230" help="36222"> + <level>2</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="epg.resetepg" type="action" label="19185" help="36225"> + <level>1</level> + <control type="button" format="action" /> + </setting> + </group> + </category> + <category id="pvrplayback" label="19177" help="36226"> + <group id="1" label="128"> + <setting id="pvrplayback.switchtofullscreenchanneltypes" type="integer" label="19171" help="36227"> + <level>1</level> + <default>3</default> <!-- TV and radio channels --> + <constraints> + <options> + <option label="20420">0</option> <!-- Never --> + <option label="19180">1</option> <!-- TV channels --> + <option label="19183">2</option> <!-- Radio channels --> + <option label="19250">3</option> <!-- TV and radio channels --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="pvrmanager.preselectplayingchannel" type="boolean" label="19269" help="36214"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="pvrmenu.displaychannelinfo" type="integer" label="19178" help="36212"> + <level>2</level> + <default>5</default> + <constraints> + <minimum label="351">0</minimum> + <step>1</step> + <maximum>15</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14045</formatlabel> + </control> + </setting> + <setting id="pvrmenu.closechannelosdonswitch" type="boolean" label="19303" help="36235"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="pvrplayback.confirmchannelswitch" type="boolean" label="19281" help="36231"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="pvrplayback.channelentrytimeout" type="integer" label="19073" help="36232"> + <level>2</level> + <default>0</default> + <constraints> + <minimum>0</minimum> + <step>250</step> + <maximum>10000</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14046</formatlabel> + </control> + </setting> + <setting id="pvrplayback.delaymarklastwatched" type="integer" label="19195" help="36236"> + <level>3</level> + <default>0</default> + <constraints> + <minimum>0</minimum> + <step>30</step> + <maximum>600</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14045</formatlabel> + </control> + </setting> + <setting id="pvrplayback.signalquality" type="boolean" label="19037" help="36229"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="pvrplayback.fps" type="integer" label="19108" help="36261"> + <level>0</level> + <default>0</default> + <constraints> + <options> + <option label="351">0</option> <!-- OFF --> + <option label="211">1</option> <!-- 50Hz --> + <option label="212">2</option> <!-- 59.94Hz --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + </group> + <group id="2" label="14304"> + <setting id="pvrplayback.enableradiords" type="boolean" label="29980" help="29981"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="pvrplayback.trafficadvisory" type="boolean" label="29982" help="29983"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + <dependencies> + <dependency type="enable" setting="pvrplayback.enableradiords">true</dependency> + </dependencies> + </setting> + <setting id="pvrplayback.trafficadvisoryvolume" type="integer" label="29984" help="29985"> + <level>2</level> + <default>10</default> + <constraints> + <minimum>0</minimum> + <step>1</step> + <maximum>20</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14050</formatlabel> + </control> + <dependencies> + <dependency type="enable" setting="pvrplayback.enableradiords">true</dependency> + <dependency type="enable" setting="pvrplayback.trafficadvisory">true</dependency> + </dependencies> + </setting> + </group> + </category> + <category id="pvrrecord" label="19043" help="36233"> + <group id="1" label="128"> + <setting id="pvrrecord.instantrecordaction" type="integer" label="19086" help="36254"> + <level>1</level> + <default>0</default> + <constraints> + <options> + <option label="19087">0</option> <!-- Record current show --> + <option label="19088">1</option> <!-- Record for a fixed time period --> + <option label="19089">2</option> <!-- Ask what to do --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="pvrrecord.instantrecordtime" type="integer" label="19172" help="36234"> + <level>1</level> + <default>120</default> + <constraints> + <minimum>1</minimum> + <step>1</step> + <maximum>720</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14044</formatlabel> + </control> + </setting> + <setting id="pvrrecord.marginstart" type="integer" label="19175" help="36237"> + <level>2</level> + <default>0</default> <!-- 0 mins --> + <constraints> + <options>pvrrecordmargins</options> + </constraints> + <control type="list" format="string"/> + </setting> + <setting id="pvrrecord.marginend" type="integer" label="19176" help="36238"> + <level>2</level> + <default>0</default> <!-- 0 mins --> + <constraints> + <options>pvrrecordmargins</options> + </constraints> + <control type="list" format="string"/> + </setting> + <setting id="pvrrecord.timernotifications" type="boolean" label="19233" help="36239"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="pvrrecord.grouprecordings" type="boolean" label="" help=""> + <default>true</default> + <level>4</level> + </setting> + </group> + </category> + <category id="pvrreminders" label="19215" help="36296"> + <group id="1" label="128"> + <setting id="pvrreminders.autoclosedelay" type="integer" label="19313" help="36297"> + <level>1</level> + <default>10</default> + <constraints> + <minimum>1</minimum> + <step>1</step> + <maximum>60</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14045</formatlabel> + </control> + </setting> + <setting id="pvrreminders.autorecord" type="boolean" label="19314" help="36298"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="pvrreminders.autoswitch" type="boolean" label="19330" help="36434"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + </group> + </category> + <category id="pvrpowermanagement" label="14095" help="36240"> + <group id="1" label="128"> + <setting id="pvrpowermanagement.enabled" type="boolean" label="305" help="36241"> + <level>2</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="pvrpowermanagement.backendidletime" type="integer" label="19244" help="36242"> + <level>2</level> + <default>15</default> + <constraints> + <minimum label="351">0</minimum> + <step>5</step> + <maximum>360</maximum> + </constraints> + <dependencies> + <dependency type="enable" setting="pvrpowermanagement.enabled" operator="is">true</dependency> + </dependencies> + <control type="spinner" format="string"> + <formatlabel>14044</formatlabel> + </control> + </setting> + <setting id="pvrpowermanagement.setwakeupcmd" type="string" label="19245" help="36243"> + <level>2</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <dependencies> + <dependency type="enable" setting="pvrpowermanagement.enabled" operator="is">true</dependency> + </dependencies> + <control type="edit" format="string" /> + </setting> + <setting id="pvrpowermanagement.prewakeup" type="integer" label="19246" help="36244"> + <level>2</level> + <default>15</default> + <constraints> + <minimum label="351">0</minimum> + <step>1</step> + <maximum>60</maximum> + </constraints> + <dependencies> + <dependency type="enable" setting="pvrpowermanagement.enabled" operator="is">true</dependency> + </dependencies> + <control type="spinner" format="string"> + <formatlabel>14044</formatlabel> + </control> + </setting> + <setting id="pvrpowermanagement.dailywakeup" type="boolean" label="19247" help="36245"> + <level>2</level> + <default>false</default> + <control type="toggle" /> + <dependencies> + <dependency type="enable" setting="pvrpowermanagement.enabled" operator="is">true</dependency> + </dependencies> + </setting> + <setting id="pvrpowermanagement.dailywakeuptime" type="string" label="19248" help="36246"> + <level>2</level> + <default>00:00:00</default> + <control type="edit" format="string" /> + <dependencies> + <dependency type="enable" setting="pvrpowermanagement.enabled" operator="is">true</dependency> + </dependencies> + </setting> + </group> + </category> + <category id="pvrparental" label="19259" help="36247"> + <access>CheckPVRParentalPin</access> + <group id="1" label="128"> + <setting id="pvrparental.enabled" type="boolean" label="449" help="36248"> + <level>2</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="pvrparental.pin" type="string" label="19261" help="36249"> + <level>2</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <dependencies> + <dependency type="enable" setting="pvrparental.enabled">true</dependency> + </dependencies> + <control type="edit" format="integer" delayed="false"> + <hidden>true</hidden> + <verifynew>true</verifynew> + </control> + </setting> + <setting id="pvrparental.duration" type="integer" label="19260" help="36250"> + <level>2</level> + <default>300</default> + <constraints> + <minimum>5</minimum> + <step>5</step> + <maximum>1200</maximum> + </constraints> + <dependencies> + <dependency type="enable" setting="pvrparental.enabled">true</dependency> + </dependencies> + <control type="spinner" format="string"> + <formatlabel>14045</formatlabel> + </control> + </setting> + </group> + </category> + <category id="pvrclient" label="19279" help="36251"> + </category> + <category id="pvrtimers" label="" help=""> + <group id="1"> + <setting id="pvrtimers.hidedisabledtimers" type="boolean" label="" help=""> + <default>false</default> + <level>4</level> + </setting> + </group> + </category> + </section> + <section id="services" label="14036" help="36319"> + <category id="general" label="16000" help="36320"> + <group id="1" label="13000"> + <setting id="services.devicename" type="string" label="1271" help="36321"> + <level>0</level> + <default>Kodi</default> + <control type="edit" format="string" /> + </setting> + </group> + <group id="2" label="1259"> + <requirement>HAS_ZEROCONF</requirement> + <setting id="services.zeroconf" type="boolean" label="1260" help="36342"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + </group> + <group id="3"> + <requirement>HAS_ZEROCONF</requirement> + <setting id="services.deviceuuid" type="string"> + <visible>false</visible> + <level>1</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <control type="edit" format="string" /> + </setting> + </group> + </category> + <category id="control" label="14223" help="36327"> + <group id="1" label="33101"> + <requirement>HAS_WEB_SERVER</requirement> + <setting id="services.webserver" type="boolean" label="263" help="36328"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="services.webserverport" type="integer" parent="services.webserver" label="730" help="36329"> + <level>1</level> + <default>8080</default> + <constraints> + <minimum>1</minimum> + <step>1</step> + <maximum>65535</maximum> + </constraints> + <updates> + <update type="change" /> + </updates> + <control type="edit" format="integer" /> + </setting> + <setting id="services.webserverauthentication" parent="services.webserver" type="boolean" label="1052" help="1053"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="services.webserverusername" type="string" parent="services.webserver" label="1048" help="36330"> + <level>1</level> + <default>kodi</default> + <updates> + <update type="change" /> + </updates> + <control type="edit" format="string" /> + </setting> + <setting id="services.webserverpassword" type="string" parent="services.webserver" label="733" help="36331"> + <level>1</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <control type="edit" format="string"> + <hidden>true</hidden> + </control> + </setting> + <setting id="services.webserverssl" type="boolean" parent="services.webserver" label="729" help="36899"> + <requirement>WEBSERVER_HAS_SSL</requirement> + <level>1</level> + <default>false</default> + <dependencies> + <dependency type="enable" setting="services.webserver">true</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="services.webskin" type="addon" label="199" help="36332"> + <level>1</level> + <default>webinterface.default</default> + <constraints> + <addontype>xbmc.webinterface</addontype> + </constraints> + <control type="button" format="addon"> + <show more="true" details="true">installed</show> + </control> + </setting> + </group> + <group id="2" label="14275"> + <setting id="services.esenabled" type="boolean" label="14276" help="36334"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="services.esport" type="integer" label="792" help="36335"> + <level>4</level> + <default>9777</default> + <constraints> + <minimum>1</minimum> + <step>1</step> + <maximum>65535</maximum> + </constraints> + <dependencies> + <dependency type="enable" setting="services.esenabled">true</dependency> + </dependencies> + <control type="edit" format="integer" /> + </setting> + <setting id="services.esportrange" type="integer" label="793" help="36336"> + <level>4</level> + <default>10</default> + <constraints> + <minimum>1</minimum> + <step>1</step> + <maximum>100</maximum> + </constraints> + <dependencies> + <dependency type="enable" setting="services.esenabled">true</dependency> + </dependencies> + <control type="spinner" format="integer" /> + </setting> + <setting id="services.esmaxclients" type="integer" label="797" help="36337"> + <level>4</level> + <default>20</default> + <constraints> + <minimum>1</minimum> + <step>1</step> + <maximum>100</maximum> + </constraints> + <dependencies> + <dependency type="enable" setting="services.esenabled">true</dependency> + </dependencies> + <control type="spinner" format="integer" /> + </setting> + <setting id="services.esallinterfaces" type="boolean" label="14277" help="36338"> + <level>1</level> + <default>false</default> + <dependencies> + <dependency type="enable"> + <condition setting="services.esenabled" operator="is">true</condition> + </dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="services.esinitialdelay" type="integer" label="795" help="36339"> + <level>4</level> + <default>750</default> + <constraints> + <minimum>5</minimum> + <step>5</step> + <maximum>10000</maximum> + </constraints> + <dependencies> + <dependency type="enable" setting="services.esenabled">true</dependency> + </dependencies> + <control type="spinner" format="integer" /> + </setting> + <setting id="services.escontinuousdelay" type="integer" label="796" help="36340"> + <level>4</level> + <default>25</default> + <constraints> + <minimum>5</minimum> + <step>5</step> + <maximum>10000</maximum> + </constraints> + <dependencies> + <dependency type="enable" setting="services.esenabled">true</dependency> + </dependencies> + <control type="spinner" format="integer" /> + </setting> + </group> + </category> + <category id="upnp" label="20187" help="36322"> + <requirement>HAS_UPNP</requirement> + <group id="1" label="16000"> + <setting id="services.upnp" type="boolean" label="21358" help="39017"> + <level>0</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="services.upnpserver" type="boolean" parent="services.upnp" label="21360" help="36323"> + <level>0</level> + <default>false</default> + <dependencies> + <dependency type="enable" setting="services.upnp">true</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="services.upnpannounce" type="boolean" parent="services.upnpserver" label="20188" help="36324"> + <level>2</level> + <default>true</default> + <dependencies> + <dependency type="enable"> + <and> + <condition setting="services.upnp" operator="is">true</condition> + <condition setting="services.upnpserver" operator="is">true</condition> + </and> + </dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="services.upnplookforexternalsubtitles" type="boolean" parent="services.upnpserver" label="20222" help="36420"> + <level>2</level> + <default>false</default> + <dependencies> + <dependency type="enable"> + <and> + <condition setting="services.upnp" operator="is">true</condition> + <condition setting="services.upnpserver" operator="is">true</condition> + </and> + </dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="services.upnpcontroller" type="boolean" parent="services.upnpserver" label="21361" help="36326"> + <level>2</level> + <default>false</default> + <dependencies> + <dependency type="enable"> + <and> + <condition setting="services.upnp" operator="is">true</condition> + <condition setting="services.upnpserver" operator="is">true</condition> + </and> + </dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="services.upnprenderer" type="boolean" label="21881" help="36325"> + <level>1</level> + <default>false</default> + <dependencies> + <dependency type="enable" setting="services.upnp">true</dependency> + </dependencies> + <control type="toggle" /> + </setting> + </group> + </category> + <category id="airplay" label="1273" help="36602"> + <requirement>HAS_AIRPLAY</requirement> + <group id="1" label="16000"> + <setting id="services.airplay" type="boolean" label="1270" help="36343"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="services.airplayvolumecontrol" type="boolean" parent="services.airplay" label="1269" help="36541"> + <level>2</level> + <default>true</default> + <dependencies> + <dependency type="enable" setting="services.airplay">true</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="services.airplayvideosupport" type="boolean" parent="services.airplay" label="1268" help="36549"> + <level>3</level> + <default>false</default> + <dependencies> + <dependency type="enable" setting="services.airplay">true</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="services.useairplaypassword" type="boolean" parent="services.airplayvideosupport" label="1272" help="36344"> + <level>1</level> + <default>false</default> + <dependencies> + <dependency type="enable" setting="services.airplay">true</dependency> + <dependency type="enable" setting="services.airplayvideosupport">true</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="services.airplaypassword" type="string" parent="services.useairplaypassword" label="733" help="36345"> + <level>1</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <dependencies> + <dependency type="enable" setting="services.useairplaypassword">true</dependency> + </dependencies> + <control type="edit" format="string"> + <hidden>true</hidden> + </control> + </setting> + </group> + </category> + <category id="smb" label="1200" help="36346"> + <requirement>HAS_FILESYSTEM_SMB</requirement> + <group id="1" label="16000"> + <setting id="smb.workgroup" type="string" label="1202" help="36348"> + <level>2</level> + <default>WORKGROUP</default> + <control type="edit" format="string" /> + </setting> + </group> + <group id="2" label="36627"> + <setting id="smb.winsserver" type="string" label="1207" help="36347"> + <level>2</level> + <default>0.0.0.0</default> + <control type="edit" format="ip" /> + </setting> + <setting id="smb.minprotocol" type="integer" label="36628" help="36629"> + <level>2</level> + <default>0</default> + <constraints> + <options> + <option label="36623">0</option> + <option label="36624">1</option> + <option label="36625">2</option> + <option label="36626">3</option> + </options> + </constraints> + <control type="list" format="integer" /> + </setting> + <setting id="smb.maxprotocol" type="integer" label="36621" help="36622"> + <level>2</level> + <default>3</default> + <constraints> + <options> + <option label="36623">0</option> + <option label="36624">1</option> + <option label="36625">2</option> + <option label="36626">3</option> + </options> + </constraints> + <control type="list" format="integer" /> + </setting> + <setting id="smb.legacysecurity" type="boolean" label="36630" help="36631"> + <level>2</level> + <default>false</default> + <control type="toggle" /> + <dependencies> + <dependency type="enable"> + <condition setting="smb.maxprotocol" operator="is">1</condition> + </dependency> + </dependencies> + </setting> + </group> + <group id="3" label="37047"> + <setting id="services.wsdiscovery" type="boolean" label="37048" help="37049"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + </group> + </category> + <category id="nfs" label="1201" help="36356"> + <requirement>HAS_FILESYSTEM_NFS</requirement> + <group id="1" label="16000"> + <setting id="nfs.version" type="integer" label="37051" help="37052"> + <level>2</level> + <default>3</default> + <constraints> + <minimum>3</minimum> + <step>1</step> + <maximum>4</maximum> + </constraints> + <control type="spinner" format="integer" /> + </setting> + </group> + </category> + <category id="weather" label="8" help="36316"> + <group id="1" label="16000"> + <setting id="weather.currentlocation" type="integer" label="0" help="36317"> + <level>4</level> + <default>1</default> + <control type="spinner" format="string" /> + </setting> + <setting id="weather.addon" type="addon" label="24029" help="36318"> + <level>0</level> + <default></default> + <constraints> + <addontype>xbmc.python.weather</addontype> + <allowempty>true</allowempty> + </constraints> + <control type="button" format="addon"> + <show more="true" details="true">installed</show> + </control> + </setting> + <setting id="weather.addonsettings" type="action" parent="weather.addon" label="21417" help="36419"> + <level>0</level> + <dependencies> + <dependency type="enable" on="property" name="AddonHasSettings" setting="weather.addon" /> + </dependencies> + <control type="button" format="action" /> + </setting> + </group> + </category> + </section> + <section id="games" label="15016" help="35200"> + <category id="gamesgeneral" label="16000"> + <group id="1" label="35201"> + <setting id="gamesgeneral.enable" type="boolean"> + <visible>false</visible> + <level>0</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="gamesgeneral.showosdhelp" type="boolean"> + <visible>false</visible> + <level>0</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="gamesgeneral.enableautosave" type="boolean" label="35253" help="35254"> + <level>0</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="gamesgeneral.enablerewind" type="boolean" label="35203" help="35204"> + <level>0</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="gamesgeneral.rewindtime" type="integer" label="35205" help="35206"> + <level>2</level> + <default>60</default> + <constraints> + <minimum>10</minimum> + <step>10</step> + <maximum>600</maximum> + </constraints> + <dependencies> + <dependency type="enable" setting="gamesgeneral.enablerewind">true</dependency> + </dependencies> + <control type="slider" format="integer"> + <popup>true</popup> + <formatlabel>14045</formatlabel> + </control> + </setting> + </group> + </category> + <category id="gamesachievements" label="15312"> + <group id="1" label="15313"> + <setting id="gamesachievements.username" type="string" label="1048" help="35262"> + <level>0</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <control type="edit" format="string"/> + </setting> + <setting id="gamesachievements.password" type="string" label="733" help="35263"> + <level>0</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <control type="edit" format="string"> + <hidden>true</hidden> + </control> + </setting> + <setting id="gamesachievements.token" type="string"> + <visible>false</visible> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <control type="edit" format="string"/> + </setting> + <setting id="gamesachievements.loggedin" type="boolean" label="35268" help="35269"> + <visible>true</visible> + <level>0</level> + <default>false</default> + <control type="toggle" /> + </setting> + </group> + </category> + </section> + <section id="system" label="13000" help="36349"> + <category id="display" label="14220" help="36603"> + <group id="1" label="16000"> + <setting id="videoscreen.monitor" type="string" label="246" help=""> + <requirement> + <or> + <condition>HAVE_X11</condition> + <condition>HAVE_WAYLAND</condition> + <condition>HAVE_OSX</condition> + <condition>HAS_DX</condition> + <condition>HAVE_IOS</condition> + <condition>HAVE_GBM</condition> + </or> + </requirement> + <level>0</level> + <default>Default</default> + <constraints> + <options>monitors</options> + </constraints> + <control type="spinner" format="string" delayed="true" /> + </setting> + <setting id="videoscreen.screen" type="integer" label="240" help="36351"> + <level>0</level> + <default>0</default> + <constraints> + <options>screens</options> + </constraints> + <dependencies> + <dependency type="update" setting="videoscreen.screenmode" /> + </dependencies> + <control type="spinner" format="string" delayed="true" /> + </setting> + <setting id="videoscreen.resolution" type="integer" parent="videoscreen.screen" label="169" help="36352"> + <level>0</level> + <default>16</default> <!-- RES_DESKTOP --> + <constraints> + <options>resolutions</options> + </constraints> + <dependencies> + <dependency type="enable" setting="videoscreen.screen" operator="!is">-1</dependency> <!-- DM_WINDOWED --> + <dependency type="update" setting="videoscreen.screen" /> + <dependency type="update" setting="videoscreen.screenmode" /> + <dependency type="update" setting="videoscreen.monitor" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="videoscreen.screenmode" type="string" parent="videoscreen.screen" label="243" help="36353"> + <requirement>IsStandAlone</requirement> + <level>0</level> + <default>DESKTOP</default> + <constraints> + <options>refreshrates</options> + </constraints> + <updates> + <update type="change" /> + </updates> + <dependencies> + <dependency type="enable" setting="videoscreen.screen" operator="!is">-1</dependency> <!-- DM_WINDOWED --> + <dependency type="update" setting="videoscreen.screen" /> + <dependency type="update" setting="videoscreen.resolution" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="videoscreen.fakefullscreen" type="boolean" parent="videoscreen.screen" label="14083" help="36354"> + <level>1</level> + <default>true</default> + <dependencies> + <dependency type="enable" setting="videoscreen.screen" operator="!is">-1</dependency> <!-- DM_WINDOWED --> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="videoscreen.blankdisplays" type="boolean" parent="videoscreen.screen" label="13130" help="36355"> + <level>1</level> + <default>false</default> + <dependencies> + <dependency type="enable" setting="videoscreen.screen" operator="!is">-1</dependency> <!-- DM_WINDOWED --> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="videoscreen.delayrefreshchange" type="integer" parent="videoscreen.screen" label="13550" help="36165"> + <level>2</level> + <default>0</default> + <constraints> + <options>refreshchangedelays</options> + </constraints> + <control type="spinner" format="string" /> + </setting> + <setting id="videoscreen.guisdrpeakluminance" type="integer" label="36097" help="36547"> + <requirement>HAS_DX</requirement> + <dependencies> + <dependency type="visible"> + <condition on="property" name="ishdrdisplay" /> + </dependency> + </dependencies> + <level>2</level> + <default>60</default> + <control type="slider" format="percentage" range="0,100" /> + </setting> + <setting id="videoscreen.10bitsurfaces" type="integer" label="36098" help="36578"> + <requirement>HAS_DX</requirement> + <level>3</level> + <default>0</default> + <constraints> + <options> + <option label="13416">0</option> <!-- AUTO --> + <option label="20420">1</option> <!-- NEVER --> + <option label="20422">2</option> <!-- ALWAYS --> + </options> + </constraints> + <control type="spinner" format="string" /> + </setting> + <setting id="videoscreen.dither" type="boolean" label="36099" help="36598"> + <requirement> + <or> + <condition>HAS_GL</condition> + <condition>HAS_DX</condition> + </or> + </requirement> + <level>3</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="videoscreen.ditherdepth" type="integer" label="36100" help="36599"> + <requirement> + <or> + <condition>HAS_GL</condition> + <condition>HAS_DX</condition> + </or> + </requirement> + <level>3</level> + <default>8</default> + <constraints> + <minimum>2</minimum> + <step>1</step> + <maximum>8</maximum> + </constraints> + <dependencies> + <dependency type="visible" setting="videoscreen.dither" operator="is">true</dependency> + </dependencies> + <control type="spinner" format="integer" /> + </setting> + <setting id="videoscreen.cmsenabled" type="boolean" label="36560" help="36561"> + <requirement> + <or> + <condition>HAS_GL</condition> + <condition>HAS_DX</condition> + </or> + </requirement> + <level>3</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="videoscreen.cmsmode" type="integer" label="36562" help="36563"> + <requirement> + <or> + <condition>HAS_GL</condition> + <condition>HAS_DX</condition> + </or> + </requirement> + <level>3</level> + <default>0</default> + <constraints> + <options>cmsmodes</options> + </constraints> + <dependencies> + <dependency type="visible" setting="videoscreen.cmsenabled" operator="is">true</dependency> + </dependencies> + <control type="list" format="integer"/> + </setting> + <setting id="videoscreen.cms3dlut" type="string" label="36564" help="36565"> + <requirement> + <or> + <condition>HAS_GL</condition> + <condition>HAS_DX</condition> + </or> + </requirement> + <level>3</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <dependencies> + <dependency type="visible" setting="videoscreen.cmsenabled" operator="is">true</dependency> + <dependency type="visible" setting="videoscreen.cmsmode" operator="is">0</dependency> + </dependencies> + <control type="button" format="action" /> + </setting> + <setting id="videoscreen.displayprofile" type="string" label="36566" help="36567"> + <requirement> + <or> + <condition>HAS_GL</condition> + <condition>HAS_DX</condition> + </or> + <and> + <condition>HAVE_LCMS2</condition> + </and> + </requirement> + <level>3</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <dependencies> + <dependency type="visible" setting="videoscreen.cmsenabled" operator="is">true</dependency> + <dependency type="visible" setting="videoscreen.cmsmode" operator="is">1</dependency> + </dependencies> + <control type="button" format="action" /> + </setting> + <setting id="videoscreen.cmswhitepoint" type="integer" label="36568" help="36569"> + <requirement> + <or> + <condition>HAS_GL</condition> + <condition>HAS_DX</condition> + </or> + <and> + <condition>HAVE_LCMS2</condition> + </and> + </requirement> + <level>3</level> + <default>0</default> + <constraints> + <options>cmswhitepoints</options> + </constraints> + <dependencies> + <dependency type="visible" setting="videoscreen.cmsenabled" operator="is">true</dependency> + <dependency type="visible" setting="videoscreen.cmsmode" operator="is">1</dependency> + </dependencies> + <control type="list" format="integer"/> + </setting> + <setting id="videoscreen.cmsprimaries" type="integer" label="36570" help="36571"> + <requirement> + <or> + <condition>HAS_GL</condition> + <condition>HAS_DX</condition> + </or> + <and> + <condition>HAVE_LCMS2</condition> + </and> + </requirement> + <level>3</level> + <default>0</default> + <constraints> + <options>cmsprimaries</options> + </constraints> + <dependencies> + <dependency type="visible" setting="videoscreen.cmsenabled" operator="is">true</dependency> + <dependency type="visible" setting="videoscreen.cmsmode" operator="is">1</dependency> + </dependencies> + <control type="list" format="integer"/> + </setting> + <setting id="videoscreen.cmsgammamode" type="integer" label="36572" help="36573"> + <requirement> + <or> + <condition>HAS_GL</condition> + <condition>HAS_DX</condition> + </or> + <and> + <condition>HAVE_LCMS2</condition> + </and> + </requirement> + <level>3</level> + <default>0</default> + <constraints> + <options>cmsgammamodes</options> + </constraints> + <dependencies> + <dependency type="visible" setting="videoscreen.cmsenabled" operator="is">true</dependency> + <dependency type="visible" setting="videoscreen.cmsmode" operator="is">1</dependency> + </dependencies> + <control type="list" format="integer"/> + </setting> + <setting id="videoscreen.cmsgamma" type="integer" label="36574" help="36575"> + <requirement> + <or> + <condition>HAS_GL</condition> + <condition>HAS_DX</condition> + </or> + <and> + <condition>HAVE_LCMS2</condition> + </and> + </requirement> + <level>3</level> + <default>220</default> + <constraints> + <minimum>160</minimum> + <step>005</step> + <maximum>280</maximum> + </constraints> + <dependencies> + <dependency type="visible" setting="videoscreen.cmsenabled" operator="is">true</dependency> + <dependency type="visible" setting="videoscreen.cmsmode" operator="is">1</dependency> + <dependency type="visible" setting="videoscreen.cmsgammamode" operator="!is">0</dependency> + </dependencies> + <control type="spinner" format="integer" /> + </setting> + <setting id="videoscreen.cmslutsize" type="integer" label="36576" help="36577"> + <requirement> + <or> + <condition>HAS_GL</condition> + <condition>HAS_DX</condition> + </or> + </requirement> + <level>3</level> + <default>6</default> + <constraints> + <minimum>4</minimum> + <step>1</step> + <maximum>8</maximum> + </constraints> + <dependencies> + <dependency type="visible" setting="videoscreen.cmsenabled" operator="is">true</dependency> + <dependency type="visible" setting="videoscreen.cmsmode" operator="is">1</dependency> + </dependencies> + <control type="spinner" format="integer" /> + </setting> + </group> + <group id="2" label="14126"> + <setting id="videoscreen.whitelist" type="list[string]" parent="videoscreen.screen" label="14126" help="36443"> + <level>3</level> + <default></default> + <constraints> + <options>modes</options> + <delimiter>,</delimiter> + <minimumitems>0</minimumitems> + </constraints> + <control type="list" format="string"> + <multiselect>true</multiselect> + </control> + </setting> + <setting id="videoscreen.whitelistpulldown" type="boolean" parent="videoscreen.whitelist" label="14127" help="36444"> + <level>3</level> + <default>false</default> + <dependencies> + <dependency type="enable" setting="videoscreen.whitelist" operator="!is"></dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="videoscreen.whitelistdoublerefreshrate" type="boolean" parent="videoscreen.whitelist" label="14128" help="36445"> + <level>3</level> + <default>false</default> + <dependencies> + <dependency type="enable" setting="videoscreen.whitelist" operator="!is"></dependency> + </dependencies> + <control type="toggle" /> + </setting> + </group> + <group id="3" label="14232"> + <setting id="videoscreen.stereoscopicmode" type="integer" label="36500" help="36539"> + <level>2</level> + <default>0</default> + <constraints> + <options>stereoscopicmodes</options> + </constraints> + <control type="list" format="integer"/> + </setting> + <setting id="videoscreen.preferedstereoscopicmode" parent="videoscreen.stereoscopicmode" type="integer" label="36524" help="36540"> + <level>2</level> + <default>100</default> <!-- ENUM RENDER_STEREO_MODE_AUTO --> + <constraints> + <options>preferedstereoscopicviewmodes</options> + </constraints> + <updates> + <update type="change" /> + </updates> + <control type="list" format="integer"/> + </setting> + </group> + <group id="4" label="496"> + <setting id="videoscreen.noofbuffers" type="integer" label="36043" help="36552"> + <level>2</level> + <default>3</default> <!-- triple buffers --> + <constraints> + <minimum>2</minimum> + <step>1</step> + <maximum>3</maximum> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="videoscreen.guicalibration" type="action" label="214" help="36357"> + <level>3</level> + <control type="button" format="action" /> + </setting> + </group> + </category> + <category id="audio" label="14221" help="36360"> + <group id="1" label="14250"> + <setting id="audiooutput.audiodevice" type="string" label="545" help="36371"> + <level>0</level> + <default>Default</default> <!-- will be properly set on startup --> + <constraints> + <options>audiodevices</options> + </constraints> + <control type="list" format="string" /> + <updates> + <update type="change" /> + </updates> + </setting> + <setting id="audiooutput.channels" type="integer" label="34100" help="36362"> + <level>0</level> + <default>1</default> <!-- AE_CH_LAYOUT_2_0 --> + <dependencies> + <dependency type="visible" on="property" name="aesettingvisible" setting="audiooutput.audiodevice">audiooutput.channels</dependency> + </dependencies> + <constraints> + <options> + <option label="34101">1</option> <!-- AE_CH_LAYOUT_2_0 --> + <option label="34102">2</option> <!-- AE_CH_LAYOUT_2_1 --> + <option label="34103">3</option> <!-- AE_CH_LAYOUT_3_0 --> + <option label="34104">4</option> <!-- AE_CH_LAYOUT_3_1 --> + <option label="34105">5</option> <!-- AE_CH_LAYOUT_4_0 --> + <option label="34106">6</option> <!-- AE_CH_LAYOUT_4_1 --> + <option label="34107">7</option> <!-- AE_CH_LAYOUT_5_0 --> + <option label="34108">8</option> <!-- AE_CH_LAYOUT_5_1 --> + <option label="34109">9</option> <!-- AE_CH_LAYOUT_7_0 --> + <option label="34110">10</option> <!-- AE_CH_LAYOUT_7_1 --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="audiooutput.config" type="integer" label="337" help="36361"> + <level>2</level> + <default>2</default> + <constraints> + <options> + <option label="338">1</option> + <option label="339">2</option> + <option label="420">3</option> + </options> + </constraints> + <control type="list" format="integer" /> + </setting> + <setting id="audiooutput.volumesteps" type="integer" label="1302" help="36442"> + <level>1</level> + <default>90</default> + <constraints> + <minimum>10</minimum> + <step>5</step> + <maximum>90</maximum> + </constraints> + <control type="list" format="integer" /> + </setting> + <setting id="audiooutput.maintainoriginalvolume" type="boolean" label="346" help="36533"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="audiooutput.stereoupmix" type="boolean" label="252" help="36364"> + <level>2</level> + <default>false</default> + <dependencies> + <dependency type="visible" on="property" name="aesettingvisible" setting="audiooutput.channels">audiooutput.stereoupmix</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="audiooutput.processquality" type="integer" label="13505" help="36169"> + <requirement>HAS_AE_QUALITY_LEVELS</requirement> + <level>2</level> + <default>30</default> <!-- AE_QUALITY_MID --> + <constraints> + <options>aequalitylevels</options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="audiooutput.atempothreshold" type="integer" label="13517" help="13518"> + <level>3</level> + <default>2</default> <!-- 2% --> + <constraints> + <minimum>0</minimum> + <step>1</step> + <maximum>100</maximum> + </constraints> + <control type="edit" format="integer" /> + </setting> + <setting id="audiooutput.samplerate" type="integer" label="458" help="36523"> + <level>2</level> + <default>48000</default> + <dependencies> + <dependency type="visible"> + <and> + <condition on="property" name="aesettingvisible" setting="audiooutput.audiodevice">audiooutput.samplerate</condition> + <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.samplerate</condition> + </and> + </dependency> + </dependencies> + <constraints> + <options> + <option label="34124">44100</option> + <option label="34125">48000</option> + <option label="34126">88200</option> + <option label="34127">96000</option> + <option label="34128">192000</option> + <option label="34129">352800</option> + <option label="34130">384000</option> + </options> + </constraints> + <control type="list" format="integer" /> + </setting> + <setting id="audiooutput.streamsilence" type="integer" label="421" help="34111"> + <level>2</level> + <default>1</default> + <constraints> + <options>audiostreamsilence</options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="audiooutput.streamnoise" type="boolean" label="34112" help="34113"> + <level>2</level> + <default>true</default> + <control type="toggle" /> + </setting> + </group> + <group id="2" label="15108"> + <setting id="audiooutput.guisoundmode" type="integer" label="34120" help="36373"> + <level>0</level> + <default>1</default> <!-- AE_SOUND_IDLE --> + <constraints> + <options> + <option label="34121">1</option> <!-- AE_SOUND_IDLE --> + <option label="34122">2</option> <!-- AE_SOUND_ALWAYS --> + <option label="34123">0</option> <!-- AE_SOUND_OFF --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="audiooutput.guisoundvolume" type="integer" label="13376" help="39176"> + <level>1</level> + <default>100</default> + <control type="slider" format="percentage" range="0,100" /> + </setting> + <setting id="lookandfeel.soundskin" type="addon" label="24006" help="36110"> + <level>0</level> + <default>resource.uisounds.kodi</default> + <dependencies> + <dependency type="enable" setting="audiooutput.guisoundmode" operator="!is">0</dependency> + </dependencies> + <constraints> + <addontype>kodi.resource.uisounds</addontype> + <allowempty>true</allowempty> + </constraints> + <updates> + <update type="change" /> + </updates> + <control type="button" format="addon"> + <show more="true" details="true">installed</show> + </control> + </setting> + </group> + <group id="3" label="14252"> + <setting id="audiooutput.passthrough" type="boolean" label="348" help="36368"> + <level>1</level> + <default>false</default> + <dependencies> + <dependency type="visible"> + <and> + <condition on="property" name="aesettingvisible" setting="audiooutput.audiodevice">audiooutput.passthrough</condition> + <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.passthrough</condition> + </and> + </dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="audiooutput.passthroughdevice" type="string" label="546" help="36372"> + <level>1</level> + <default>Default</default> <!-- will be properly set on startup --> + <dependencies> + <dependency type="visible"> + <and> + <condition on="property" name="aesettingvisible" setting="audiooutput.passthrough">audiooutput.passthrough</condition> + <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.passthrough</condition> + </and> + </dependency> + <dependency type="enable" setting="audiooutput.passthrough" operator="is">true</dependency> + </dependencies> + <constraints> + <options>audiodevicespassthrough</options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="audiooutput.ac3passthrough" type="boolean" label="364" help="36365"> + <level>2</level> + <default>true</default> + <dependencies> + <dependency type="visible" on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.passthrough</dependency> + <dependency type="enable" setting="audiooutput.passthrough" operator="is">true</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="audiooutput.ac3transcode" type="boolean" parent="audiooutput.ac3passthrough" label="667" help="36429"> + <level>2</level> + <default>false</default> + <dependencies> + <dependency type="enable"> + <and> + <condition setting="audiooutput.passthrough" operator="is">true</condition> + <condition setting="audiooutput.ac3passthrough" operator="is">true</condition> + </and> + </dependency> + <dependency type="visible"> + <and> + <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.ac3transcode</condition> + <condition on="property" name="aesettingvisible" setting="audiooutput.channels">audiooutput.ac3transcode</condition> + </and> + </dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="audiooutput.eac3passthrough" type="boolean" label="448" help="37016"> + <level>2</level> + <default>false</default> + <dependencies> + <dependency type="visible"> + <and> + <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.eac3passthrough</condition> + <condition on="property" name="aesettingvisible" setting="audiooutput.passthroughdevice">audiooutput.eac3passthrough</condition> + </and> + </dependency> + <dependency type="enable" setting="audiooutput.passthrough" operator="is">true</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="audiooutput.dtspassthrough" type="boolean" label="254" help="36366"> + <level>2</level> + <default>false</default> + <dependencies> + <dependency type="visible"> + <and> + <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.dtspassthrough</condition> + <condition on="property" name="aesettingvisible" setting="audiooutput.passthroughdevice">audiooutput.dtspassthrough</condition> + </and> + </dependency> + <dependency type="enable" setting="audiooutput.passthrough" operator="is">true</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="audiooutput.truehdpassthrough" type="boolean" label="349" help="36369"> + <level>2</level> + <default>false</default> + <dependencies> + <dependency type="visible"> + <and> + <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.truehdpassthrough</condition> + <condition on="property" name="aesettingvisible" setting="audiooutput.passthroughdevice">audiooutput.truehdpassthrough</condition> + </and> + </dependency> + <dependency type="enable" setting="audiooutput.passthrough" operator="is">true</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="audiooutput.dtshdpassthrough" type="boolean" label="347" help="36370"> + <level>2</level> + <default>false</default> + <dependencies> + <dependency type="visible"> + <and> + <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.dtshdpassthrough</condition> + <condition on="property" name="aesettingvisible" setting="audiooutput.passthroughdevice">audiooutput.dtshdpassthrough</condition> + </and> + </dependency> + <dependency type="enable" setting="audiooutput.passthrough" operator="is">true</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="audiooutput.dtshdcorefallback" type="boolean" parent="audiooutput.dtshdpassthrough" label="2203" help="2204"> + <level>2</level> + <default>true</default> + <dependencies> + <dependency type="visible"> + <and> + <condition setting="audiooutput.dtshdpassthrough" operator="is">false</condition> + <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.dtshdpassthrough</condition> + <condition on="property" name="aesettingvisible" setting="audiooutput.passthroughdevice">audiooutput.dtshdpassthrough</condition> + </and> + </dependency> + <dependency type="enable"> + <and> + <condition setting="audiooutput.passthrough" operator="is">true</condition> + </and> + </dependency> + </dependencies> + <control type="toggle" /> + </setting> + </group> + </category> + <category id="input" label="14125" help="36374"> + <group id="1" label="35000"> + <setting id="input.peripherals" type="action" label="35000" help="36375"> + <level>1</level> + <dependencies> + <dependency type="enable" on="property" name="HasPeripherals" /> + </dependencies> + <control type="button" format="action" /> + </setting> + <setting id="input.peripherallibraries" type="action" label="35047" help="35048"> + <level>1</level> + <dependencies> + <dependency type="enable" on="property" name="HasPeripheralLibraries" /> + </dependencies> + <control type="button" format="action" /> + </setting> + </group> + <group id="2" label="14094"> + <setting id="input.enablemouse" type="boolean" label="21369" help="36377"> + <level>2</level> + <control type="toggle" /> + <default>true</default> + </setting> + <setting id="input.enablejoystick" type="boolean" label="35100" help="36378"> + <level>2</level> + <control type="toggle" /> + <default>true</default> + </setting> + <setting id="input.asknewcontrollers" type="boolean"> + <level>0</level> + <control type="toggle" /> + <default>true</default> + <visible>false</visible> + </setting> + <setting id="input.controllerconfig" type="action" label="35063" help="35064"> + <level>0</level> + <control type="button" format="action" /> + </setting> + <setting id="input.rumblenotify" type="boolean" label="35053" help="35054"> + <level>1</level> + <dependencies> + <dependency type="visible" on="property" name="HasRumbleFeature" /> + </dependencies> + <control type="toggle" /> + <default>false</default> + </setting> + <setting id="input.testrumble" type="action" label="35051" help="35052"> + <level>2</level> + <dependencies> + <dependency type="visible" on="property" name="HasRumbleFeature" /> + <dependency type="enable" on="property" name="HasRumbleController" /> + </dependencies> + <control type="button" format="action" /> + </setting> + <setting id="input.controllerpoweroff" type="boolean" label="35088" help="35089"> + <level>1</level> + <dependencies> + <dependency type="visible" on="property" name="HasPowerOffFeature" /> + </dependencies> + <default>false</default> + <control type="toggle" /> + </setting> + </group> + <group id="3" label="13600"> + </group> + </category> + <category id="network" label="798" help="36379"> + <group id="1" label="16000"> + <setting id="network.usehttpproxy" type="boolean" label="708" help="36380"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="network.httpproxytype" type="integer" parent="network.usehttpproxy" label="1180" help="36381"> + <level>1</level> + <default>0</default> + <constraints> + <options> + <option label="1181">0</option> <!-- PROXY_HTTP --> + <option label="1186">5</option> <!-- PROXY_HTTPS --> + <option label="1182">1</option> <!-- PROXY_SOCKS4 --> + <option label="1183">2</option> <!-- PROXY_SOCKS4A --> + <option label="1184">3</option> <!-- PROXY_SOCKS5 --> + <option label="1185">4</option> <!-- PROXY_SOCKS5_REMOTE --> + </options> + </constraints> + <dependencies> + <dependency type="enable" setting="network.usehttpproxy">true</dependency> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="network.httpproxyserver" type="string" parent="network.usehttpproxy" label="706" help="36382"> + <level>1</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <dependencies> + <dependency type="enable" setting="network.usehttpproxy">true</dependency> + </dependencies> + <control type="edit" format="string" /> + </setting> + <setting id="network.httpproxyport" type="integer" parent="network.usehttpproxy" label="730" help="36383"> + <level>1</level> + <default>8080</default> + <constraints> + <minimum>1</minimum> + <step>1</step> + <maximum>65535</maximum> + </constraints> + <dependencies> + <dependency type="enable" setting="network.usehttpproxy">true</dependency> + </dependencies> + <control type="edit" format="integer" /> + </setting> + <setting id="network.httpproxyusername" type="string" parent="network.usehttpproxy" label="1048" help="36384"> + <level>1</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <dependencies> + <dependency type="enable" setting="network.usehttpproxy">true</dependency> + </dependencies> + <control type="edit" format="string" /> + </setting> + <setting id="network.httpproxypassword" type="string" parent="network.usehttpproxy" label="733" help="36385"> + <level>1</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <dependencies> + <dependency type="enable" setting="network.usehttpproxy">true</dependency> + </dependencies> + <control type="edit" format="string"> + <hidden>true</hidden> + </control> + </setting> + <setting id="network.bandwidth" type="integer" label="14041" help="36386"> + <level>1</level> + <default>0</default> + <constraints> + <minimum label="351">0</minimum> + <step>512</step> + <maximum>102400</maximum> + </constraints> + <control type="list" format="string"> + <formatlabel>14048</formatlabel> + </control> + </setting> + </group> + </category> + <category id="powermanagement" label="14095" help="36387"> + <group id="1" label="14255"> + <setting id="powermanagement.displaysoff" type="integer" label="1450" help="36388"> + <level>0</level> + <default>0</default> + <constraints> + <minimum label="351">0</minimum> + <step>5</step> + <maximum>120</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14044</formatlabel> + </control> + </setting> + <setting id="powermanagement.shutdowntime" type="integer" label="357" help="36389"> + <level>2</level> + <default>0</default> + <constraints> + <minimum label="351">0</minimum> + <step>5</step> + <maximum>120</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14044</formatlabel> + </control> + </setting> + <setting id="powermanagement.shutdownstate" type="integer" label="13008" help="36390"> + <level>2</level> + <default>0</default> <!-- POWERSTATE_QUIT --> + <constraints> + <options>shutdownstates</options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="powermanagement.waitfornetwork" type="integer" label="39011" help="39012"> + <level>2</level> + <default>0</default> + <constraints> + <minimum label="351">0</minimum> + <step>1</step> + <maximum>30</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14045</formatlabel> + </control> + </setting> + </group> + <group id="2" label="14256"> + <setting id="powermanagement.wakeonaccess" type="boolean" label="13026" help="36350"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + </group> + </category> + <category id="addons" label="24001" help="36610"> + <group id="1" label="16000"> + <setting id="general.addonupdates" type="integer" label="36605" help="36611"> + <level>0</level> + <default>0</default> + <constraints> + <options> + <option label="36606">0</option> <!-- AUTO_UPDATES_ON --> + <option label="36607">1</option> <!-- AUTO_UPDATES_NOTIFY --> + <option label="36608">2</option> <!-- AUTO_UPDATES_NEVER --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="general.addonnotifications" type="boolean" label="36609" help="36612"> + <level>0</level> + <default>false</default> + <control type="toggle" /> + <dependencies> + <dependency type="enable" setting="general.addonupdates">0</dependency> + </dependencies> + </setting> + <setting id="addons.managedependencies" type="action" label="24996" help="36613"> + <level>2</level> + <control type="button" format="action" /> + </setting> + <setting id="addons.removeorphaneddependencies" type="action" label="36638" help="36639"> + <level>2</level> + <control type="button" format="action" /> + </setting> + <setting id="addons.showrunning" type="action" label="24994" help="36614"> + <level>2</level> + <control type="button" format="action" /> + </setting> + <setting id="addons.unknownsources" type="boolean" label="36615" help="36616"> + <level>0</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="addons.updatemode" type="integer" parent="addons.unknownsources" label="36422" help="36423"> + <level>1</level> + <default>0</default> + <constraints> + <options> + <option label="36437">0</option> <!-- OFFICIAL_ONLY --> + <option label="36438">1</option> <!-- ANY_REPOSITORY --> + </options> + </constraints> + <dependencies> + <dependency type="enable" setting="addons.unknownsources" operator="is">true</dependency> + </dependencies> + <control type="list" format="string" /> + </setting> + </group> + </category> + <category id="logging" label="14092" help="36391"> + <group id="1" label="14260"> + <setting id="debug.showloginfo" type="boolean" label="20191" help="36392"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="debug.extralogging" type="boolean" label="666" help="36394"> + <level>1</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="debug.setextraloglevel" type="list[integer]" parent="debug.extralogging" label="668" help="36534"> + <level>1</level> + <default></default> + <constraints> + <options>loggingcomponents</options> + <delimiter>,</delimiter> + </constraints> + <dependencies> + <dependency type="enable" setting="debug.extralogging" operator="is">true</dependency> + </dependencies> + <control type="list" format="string"> + <multiselect>true</multiselect> + <hidevalue>true</hidevalue> + </control> + </setting> + <setting id="debug.screenshotpath" type="path" label="20004" help="36393"> + <level>1</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <control type="button" format="path"> + <heading>657</heading> + </control> + </setting> + </group> + <group id="2" label="14111"> + <setting id="eventlog.enabled" type="boolean" label="14112" help="36460"> + <level>1</level> + <default>true</default> + <control type="toggle" /> + </setting> + <setting id="eventlog.enablednotifications" type="boolean" parent="eventlog.enabled" label="14113" help="36461"> + <level>1</level> + <default>false</default> + <dependencies> + <dependency type="enable" setting="eventlog.enabled" operator="is">true</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="eventlog.show" type="action" label="14114" help="36431"> + <level>1</level> + <dependencies> + <dependency type="enable" setting="eventlog.enabled" operator="is">true</dependency> + </dependencies> + <control type="button" format="action"> + <hidevalue>true</hidevalue> + </control> + </setting> + </group> + </category> + <category id="cache" label="439" help="36399"> + <visible>false</visible> + <group id="1"> + <setting id="cache.harddisk" type="integer" label="14025" help="36400"> + <level>4</level> + <default>256</default> + <constraints> + <minimum label="351">0</minimum> + <step>256</step> + <maximum>4096</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14049</formatlabel> + </control> + </setting> + </group> + <group id="2"> + <setting id="cachevideo.dvdrom" type="integer" label="14026" help="36401"> + <level>4</level> + <default>2048</default> + <constraints> + <minimum label="351">0</minimum> + <step>256</step> + <maximum>16384</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14049</formatlabel> + </control> + </setting> + <setting id="cachevideo.lan" type="integer" label="14027" help="36402"> + <level>4</level> + <default>2048</default> + <constraints> + <minimum label="351">0</minimum> + <step>256</step> + <maximum>16384</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14049</formatlabel> + </control> + </setting> + <setting id="cachevideo.internet" type="integer" label="14028" help="36403"> + <level>4</level> + <default>4096</default> + <constraints> + <minimum label="351">0</minimum> + <step>256</step> + <maximum>16384</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14049</formatlabel> + </control> + </setting> + </group> + <group id="3"> + <setting id="cacheaudio.dvdrom" type="integer" label="14030" help="36404"> + <level>4</level> + <default>256</default> + <constraints> + <minimum label="351">0</minimum> + <step>256</step> + <maximum>4096</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14049</formatlabel> + </control> + </setting> + <setting id="cacheaudio.lan" type="integer" label="14031" help="36405"> + <level>4</level> + <default>256</default> + <constraints> + <minimum label="351">0</minimum> + <step>256</step> + <maximum>4096</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14049</formatlabel> + </control> + </setting> + <setting id="cacheaudio.internet" type="integer" label="14032" help="36406"> + <level>4</level> + <default>256</default> + <constraints> + <minimum label="351">0</minimum> + <step>256</step> + <maximum>4096</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14049</formatlabel> + </control> + </setting> + </group> + <group id="4"> + <setting id="cachedvd.dvdrom" type="integer" label="14034" help="36407"> + <level>4</level> + <default>2048</default> + <constraints> + <minimum label="351">0</minimum> + <step>256</step> + <maximum>16384</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14049</formatlabel> + </control> + </setting> + <setting id="cachedvd.lan" type="integer" label="14060" help="36408"> + <level>4</level> + <default>2048</default> + <constraints> + <minimum label="351">0</minimum> + <step>256</step> + <maximum>16384</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14049</formatlabel> + </control> + </setting> + </group> + <group id="5"> + <setting id="cacheunknown.internet" type="integer" label="4096" help="36409"> + <level>4</level> + <default>4096</default> + <constraints> + <minimum label="351">0</minimum> + <step>256</step> + <maximum>16384</maximum> + </constraints> + <control type="spinner" format="string"> + <formatlabel>14049</formatlabel> + </control> + </setting> + </group> + </category> + <category id="paths" label="" help="36410"> + <group id="1"> + <setting id="system.playlistspath" type="path" label="20006" help="36411"> + <level>4</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + </setting> + </group> + </category> + <category id="general" label="" help="36412"> + <group id="1"> + <setting id="general.addonforeignfilter" type="boolean" label="0" help="36415"> + <level>4</level> + <default>false</default> + </setting> + <setting id="general.addonbrokenfilter" type="boolean" label="0" help="36415"> + <level>4</level> + <default>true</default> + </setting> + </group> + </category> + </section> + <section id="interface" label="14206" help="38102"> + <category id="skin" label="166" help="36102"> + <group id="1" label="24997"> + <setting id="lookandfeel.skin" type="addon" label="166" help="36103"> + <level>0</level> + <default>skin.estuary</default> + <constraints> + <addontype>xbmc.gui.skin</addontype> + </constraints> + <control type="button" format="addon"> + <show more="true" details="true">installed</show> + </control> + </setting> + <setting id="lookandfeel.skinsettings" type="action" parent="lookandfeel.skin" label="14261" help="36104"> + <level>0</level> + <dependencies> + <dependency type="enable" on="property" name="AddonHasSettings" setting="lookandfeel.skin" /> + </dependencies> + <control type="button" format="action" /> + </setting> + <setting id="lookandfeel.skintheme" type="string" parent="lookandfeel.skin" label="15111" help="36105"> + <level>1</level> + <default>SKINDEFAULT</default> + <constraints> + <options>skinthemes</options> + </constraints> + <dependencies> + <dependency type="update" setting="lookandfeel.skin" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="lookandfeel.skincolors" type="string" parent="lookandfeel.skin" label="14078" help="36106"> + <level>1</level> + <default>SKINDEFAULT</default> + <constraints> + <options>skincolors</options> + </constraints> + <dependencies> + <dependency type="update" setting="lookandfeel.skin" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="lookandfeel.font" type="string" parent="lookandfeel.skin" label="13303" help="36107"> + <level>1</level> + <default>Default</default> + <constraints> + <options>skinfonts</options> + </constraints> + <dependencies> + <dependency type="update" setting="lookandfeel.skin" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="lookandfeel.skinzoom" type="integer" parent="lookandfeel.skin" label="20109" help="36108"> + <level>1</level> + <default>0</default> + <constraints> + <minimum>-30</minimum> + <step>2</step> + <maximum>30</maximum> + </constraints> + <dependencies> + <dependency type="update" setting="lookandfeel.skin" /> + </dependencies> + <control type="spinner" format="string"> + <formatlabel>14047</formatlabel> + </control> + </setting> + <setting id="lookandfeel.stereostrength" type="integer" label="36550" help="36551"> + <level>2</level> + <default>5</default> + <constraints> + <minimum>0</minimum> + <step>1</step> + <maximum>10</maximum> + </constraints> + <dependencies> + <dependency type="update" setting="lookandfeel.skin" /> + </dependencies> + <control type="spinner" format="string" /> + </setting> + <setting id="lookandfeel.enablerssfeeds" type="boolean" label="13305" help="36111"> + <level>0</level> + <default>false</default> + <control type="toggle" /> + </setting> + <setting id="lookandfeel.rssedit" type="string" parent="lookandfeel.enablerssfeeds" label="21450" help="36112"> + <level>1</level> + <default></default> + <constraints> + <allowempty>true</allowempty> + </constraints> + <dependencies> + <dependency type="enable" setting="lookandfeel.enablerssfeeds">true</dependency> + </dependencies> + <control type="button" format="action"> + <hidevalue>true</hidevalue> + </control> + </setting> + </group> + </category> + <category id="regional" label="14222" help="36113"> + <group id="1" label="14218"> + <setting id="locale.language" type="addon" label="248" help="36114"> + <level>0</level> + <default>resource.language.en_gb</default> + <constraints> + <addontype>kodi.resource.language</addontype> + </constraints> + <control type="button" format="addon"> + <show more="false" details="false">all</show> + </control> + </setting> + <setting id="locale.charset" type="string" label="14091" help="36116"> + <level>1</level> + <default>DEFAULT</default> + <constraints> + <options>charsets</options> + </constraints> + <dependencies> + <dependency type="update" setting="locale.language" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="locale.keyboardlayouts" type="list[string]" label="310" help="36432"> + <level>0</level> + <default>English QWERTY</default> + <constraints> + <options>keyboardlayouts</options> + <delimiter>|</delimiter> + <minimumitems>1</minimumitems> + <maximumitems>3</maximumitems> + </constraints> + <control type="list" format="string"> + <multiselect>true</multiselect> + </control> + </setting> + <setting id="locale.activekeyboardlayout" type="string" label="0" help="0"> + <level>4</level> + <default>English QWERTY</default> + </setting> + </group> + <group id="2" label="14270"> + <setting id="locale.country" type="string" label="14271" help="36115"> + <level>0</level> + <default>USA (12h)</default> + <constraints> + <options>regions</options> + </constraints> + <dependencies> + <dependency type="update" setting="locale.language" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="locale.timezonecountry" type="string" label="14079" help="36117"> + <level>1</level> + <default>default</default> <!-- will be properly set on startup --> + <constraints> + <options>timezonecountries</options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="locale.timezone" type="string" label="14080" help="36118"> + <level>1</level> + <default>default</default> <!-- will be properly set on startup --> + <constraints> + <options>timezones</options> + </constraints> + <dependencies> + <dependency type="update" setting="locale.timezonecountry" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="locale.shortdateformat" type="string" label="14109" help="36173"> + <level>2</level> + <default>regional</default> + <constraints> + <options>shortdateformats</options> + </constraints> + <dependencies> + <dependency type="update" setting="locale.country" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="locale.longdateformat" type="string" label="14110" help="36215"> + <level>2</level> + <default>regional</default> + <constraints> + <options>longdateformats</options> + </constraints> + <dependencies> + <dependency type="update" setting="locale.country" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="locale.timeformat" type="string" label="14107" help="36167"> + <level>2</level> + <default>regional</default> + <constraints> + <options>timeformats</options> + </constraints> + <dependencies> + <dependency type="update" setting="locale.country" /> + <dependency type="update" setting="locale.use24hourclock" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="locale.use24hourclock" type="string" label="14108" help="36168"> + <level>2</level> + <default>regional</default> + <constraints> + <options>24hourclockformats</options> + </constraints> + <dependencies> + <dependency type="update" setting="locale.country" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="locale.temperatureunit" type="string" label="14105" help="36140"> + <level>2</level> + <default>regional</default> + <constraints> + <options>temperatureunits</options> + </constraints> + <dependencies> + <dependency type="update" setting="locale.country" /> + </dependencies> + <control type="list" format="string" /> + </setting> + <setting id="locale.speedunit" type="string" label="14106" help="36142"> + <level>2</level> + <default>regional</default> + <constraints> + <options>speedunits</options> + </constraints> + <dependencies> + <dependency type="update" setting="locale.country" /> + </dependencies> + <control type="list" format="string" /> + </setting> + </group> + </category> + <category id="screensaver" label="360" help="36128"> + <group id="1" label="16000"> + <setting id="screensaver.mode" type="addon" label="356" help="36130"> + <level>0</level> + <default>default</default> <!-- will be properly set on startup --> + <constraints> + <addontype>xbmc.ui.screensaver</addontype> + <allowempty>true</allowempty> + </constraints> + <updates> + <update type="change" /> + </updates> + <control type="button" format="addon"> + <show more="true" details="true">installed</show> + </control> + </setting> + <setting id="screensaver.settings" parent="screensaver.mode" type="action" label="21417" help="36131"> + <level>1</level> + <dependencies> + <dependency type="enable"> + <and> + <condition on="setting" setting="screensaver.mode" operator="!is"></condition> + <condition on="property" name="AddonHasSettings" setting="screensaver.mode" /> + </and> + </dependency> + </dependencies> + <control type="button" format="action" /> + </setting> + <setting id="screensaver.preview" type="action" parent="screensaver.mode" label="1000" help="36132"> + <level>1</level> + <dependencies> + <dependency type="enable" setting="screensaver.mode" operator="!is"></dependency> + </dependencies> + <control type="button" format="action" /> + </setting> + <setting id="screensaver.time" type="integer" label="355" help="36129"> + <level>0</level> + <default>3</default> + <constraints> + <minimum>1</minimum> + <step>1</step> + <maximum>60</maximum> + </constraints> + <dependencies> + <dependency type="enable" setting="screensaver.mode" operator="!is"></dependency> + </dependencies> + <control type="spinner" format="string"> + <formatlabel>14044</formatlabel> + </control> + </setting> + <setting id="screensaver.usemusicvisinstead" type="boolean" label="13392" help="36133"> + <level>0</level> + <default>true</default> + <dependencies> + <dependency type="enable" setting="screensaver.mode" operator="!is"></dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="screensaver.usedimonpause" type="boolean" label="22014" help="36134"> + <level>1</level> + <default>true</default> + <dependencies> + <dependency type="enable"> + <and> + <condition setting="screensaver.mode" operator="!is">screensaver.xbmc.builtin.dim</condition> + <condition setting="screensaver.mode" operator="!is"></condition> + </and> + </dependency> + </dependencies> + <control type="toggle" /> + </setting> + </group> + </category> + <category id="masterlock" label="12360" help="36395"> + <access>CheckMasterLock</access> + <group id="1" label="16000"> + <setting id="masterlock.lockcode" type="action" label="20100" help="36396"> + <level>1</level> + <control type="button" format="action"> + <hidevalue>true</hidevalue> + </control> + </setting> + <setting id="masterlock.startuplock" type="boolean" parent="masterlock.lockcode" label="20076" help="36397"> + <level>1</level> + <default>false</default> + <dependencies> + <dependency type="enable" on="property" name="ProfileLockMode" operator="!is">0</dependency> + </dependencies> + <control type="toggle" /> + </setting> + <setting id="masterlock.maxretries" type="integer" label="12362" help="36398"> + <level>4</level> + <default>3</default> + <constraints> + <minimum>3</minimum> + <step>1</step> + <maximum>100</maximum> + </constraints> + <control type="spinner" format="integer" /> + </setting> + </group> + </category> + <category id="other" label="14224" help="36292"> + <group id="2" label="14227"> + <setting id="lookandfeel.startupaction" type="integer" label="39100" help="36161"> + <level>0</level> + <default>0</default> <!-- STARTUP_ACTION_NONE --> + <constraints> + <options> + <option label="231">0</option> <!-- STARTUP_ACTION_NONE --> + <option label="39101">1</option> <!-- STARTUP_ACTION_PLAY_TV --> + <option label="39102">2</option> <!-- STARTUP_ACTION_PLAY_RADIO --> + </options> + </constraints> + <control type="list" format="string" /> + </setting> + <setting id="lookandfeel.startupwindow" type="integer" label="512" help="36109"> + <level>0</level> + <default>10000</default> <!-- WINDOW_HOME --> + <constraints> + <options>startupwindows</options> + </constraints> + <dependencies> + <dependency type="update" setting="lookandfeel.skin" /> + </dependencies> + <control type="list" format="string" /> + </setting> + </group> + </category> + <category id="window" label="0" help="36135"> + <visible>false</visible> + <group id="1"> + <setting id="window.width" type="integer" label="0" help="36136"> + <level>4</level> + <default>720</default> + </setting> + <setting id="window.height" type="integer" label="0" help="36137"> + <level>4</level> + <default>480</default> + </setting> + </group> + </category> + </section> +</settings> diff --git a/system/settings/win10.xml b/system/settings/win10.xml new file mode 100644 index 0000000..c735691 --- /dev/null +++ b/system/settings/win10.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8" ?> +<settings version="1"> + <section id="system"> + <category id="display"> + <group id="1"> + <setting id="videoscreen.fakefullscreen"> + <default>true</default> + <visible>false</visible> + </setting> + <setting id="videoscreen.blankdisplays"> + <default>false</default> + <visible>false</visible> + </setting> + <setting id="videoscreen.monitor"> + <visible>false</visible> + </setting> + </group> + </category> + <category id="audio"> + <group id="1"> + <setting id="audiooutput.audiodevice"> + <level>0</level> + <default>XAUDIO:default</default> + </setting> + </group> + <group id="3"> + <setting id="audiooutput.passthroughdevice"> + <level>1</level> + <default>WASAPI:default</default> + </setting> + </group> + </category> + </section> + <section id="pvr"> + <category id="pvrpowermanagement"> + <setting id="pvrpowermanagement.setwakeupcmd"> + <default></default> + <visible>false</visible> + </setting> + </category> + </section> + <section id="games"> + <category id="gamesgeneral"> + <group id="1"> + <setting id="gamesgeneral.enable"> + <default>false</default> + </setting> + </group> + </category> + </section> +</settings> diff --git a/system/settings/win32.xml b/system/settings/win32.xml new file mode 100644 index 0000000..bafa5ea --- /dev/null +++ b/system/settings/win32.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" ?> +<settings version="1"> + <section id="interface" label="14206" help="38102"> + <category id="window" label="0" help="36135"> + <visible>false</visible> + <group id="1"> + <setting id="window.top" type="integer" label="0" help="36136"> + <level>4</level> + <default>0</default> + </setting> + <setting id="window.left" type="integer" label="0" help="36136"> + <level>4</level> + <default>0</default> + </setting> + </group> + </category> + </section> +</settings> diff --git a/system/settings/windows.xml b/system/settings/windows.xml new file mode 100644 index 0000000..163cb5c --- /dev/null +++ b/system/settings/windows.xml @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="utf-8" ?> +<settings version="1"> + <section id="services"> + <category id="general"> + <group id="2"> + <setting id="services.zeroconf"> + <default>false</default> + </setting> + </group> + </category> + <category id="smb"> + <group id="1"> + <visible>false</visible> + </group> + <group id="2"> + <visible>false</visible> + </group> + </category> + </section> + <section id="system"> + <category id="audio"> + <group id="1"> + <setting id="audiooutput.audiodevice" type="string" label="545" help="36371"> + <level>0</level> + <default>DIRECTSOUND:default</default> + <constraints> + <options>audiodevices</options> + </constraints> + <control type="list" format="string" /> + </setting> + </group> + <group id="3"> + <setting id="audiooutput.passthroughdevice" type="string" label="546" help="36372"> + <level>1</level> + <default>DIRECTSOUND:default</default> + <constraints> + <options>audiodevicespassthrough</options> + </constraints> + <dependencies> + <dependency type="visible"> + <and> + <condition on="property" name="aesettingvisible" setting="audiooutput.audiodevice">audiooutput.passthrough</condition> + <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.passthrough</condition> + </and> + </dependency> + </dependencies> + <control type="list" format="string" /> + </setting> + </group> + </category> + <category id="display"> + <group id="1"> + <setting id="videoscreen.limitedrange" type="boolean" label="36042" help="36359"> + <level>3</level> + <default>false</default> + <control type="toggle" /> + </setting> + </group> + </category> + </section> + <section id="interface"> + <category id="regional"> + <group id="2"> + <setting id="locale.timezonecountry"> + <visible>false</visible> + </setting> + <setting id="locale.timezone"> + <visible>false</visible> + </setting> + </group> + </category> + </section> +</settings> diff --git a/system/shaders/GL/1.2/gl_convolution-4x4.glsl b/system/shaders/GL/1.2/gl_convolution-4x4.glsl new file mode 100644 index 0000000..8c97423 --- /dev/null +++ b/system/shaders/GL/1.2/gl_convolution-4x4.glsl @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +uniform sampler2D img; +uniform vec2 stepxy; +uniform float m_stretch; +uniform float m_alpha; +varying vec2 m_cord; +uniform sampler1D kernelTex; + +vec4 weight(float pos) +{ +#if defined(HAS_FLOAT_TEXTURE) + return texture1D(kernelTex, pos); +#else + return texture1D(kernelTex, pos) * 2.0 - 1.0; +#endif +} + +vec2 stretch(vec2 pos) +{ +#if (XBMC_STRETCH) + // our transform should map [0..1] to itself, with f(0) = 0, f(1) = 1, f(0.5) = 0.5, and f'(0.5) = b. + // a simple curve to do this is g(x) = b(x-0.5) + (1-b)2^(n-1)(x-0.5)^n + 0.5 + // where the power preserves sign. n = 2 is the simplest non-linear case (required when b != 1) + float x = pos.x - 0.5; + return vec2(mix(x * abs(x) * 2.0, x, m_stretch) + 0.5, pos.y); +#else + return pos; +#endif +} + +vec3 pixel(float xpos, float ypos) +{ + return texture2D(img, vec2(xpos, ypos)).rgb; +} + +vec3 line (float ypos, vec4 xpos, vec4 linetaps) +{ + return + pixel(xpos.r, ypos) * linetaps.r + + pixel(xpos.g, ypos) * linetaps.g + + pixel(xpos.b, ypos) * linetaps.b + + pixel(xpos.a, ypos) * linetaps.a; +} + +vec4 process() +{ + vec4 rgb; + vec2 pos = stretch(m_cord) + stepxy * 0.5; + vec2 f = fract(pos / stepxy); + + vec4 linetaps = weight(1.0 - f.x); + vec4 columntaps = weight(1.0 - f.y); + + //make sure all taps added together is exactly 1.0, otherwise some (very small) distortion can occur + linetaps /= linetaps.r + linetaps.g + linetaps.b + linetaps.a; + columntaps /= columntaps.r + columntaps.g + columntaps.b + columntaps.a; + + vec2 xystart = (-1.5 - f) * stepxy + pos; + vec4 xpos = vec4(xystart.x, xystart.x + stepxy.x, xystart.x + stepxy.x * 2.0, xystart.x + stepxy.x * 3.0); + + rgb.rgb = + line(xystart.y , xpos, linetaps) * columntaps.r + + line(xystart.y + stepxy.y , xpos, linetaps) * columntaps.g + + line(xystart.y + stepxy.y * 2.0, xpos, linetaps) * columntaps.b + + line(xystart.y + stepxy.y * 3.0, xpos, linetaps) * columntaps.a; + + rgb.a = m_alpha; + + return rgb; +} diff --git a/system/shaders/GL/1.2/gl_convolution-6x6.glsl b/system/shaders/GL/1.2/gl_convolution-6x6.glsl new file mode 100644 index 0000000..26c9f49 --- /dev/null +++ b/system/shaders/GL/1.2/gl_convolution-6x6.glsl @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +uniform sampler2D img; +uniform vec2 stepxy; +uniform float m_stretch; +uniform float m_alpha; +varying vec2 m_cord; +uniform sampler1D kernelTex; + +vec3 weight(float pos) +{ +#if defined(HAS_FLOAT_TEXTURE) + return texture1D(kernelTex, pos).rgb; +#else + return texture1D(kernelTex, pos).rgb * 2.0 - 1.0; +#endif +} + +vec2 stretch(vec2 pos) +{ +#if (XBMC_STRETCH) + // our transform should map [0..1] to itself, with f(0) = 0, f(1) = 1, f(0.5) = 0.5, and f'(0.5) = b. + // a simple curve to do this is g(x) = b(x-0.5) + (1-b)2^(n-1)(x-0.5)^n + 0.5 + // where the power preserves sign. n = 2 is the simplest non-linear case (required when b != 1) + float x = pos.x - 0.5; + return vec2(mix(x * abs(x) * 2.0, x, m_stretch) + 0.5, pos.y); +#else + return pos; +#endif +} + +vec3 pixel(float xpos, float ypos) +{ + return texture2D(img, vec2(xpos, ypos)).rgb; +} + +vec3 line (float ypos, vec3 xpos1, vec3 xpos2, vec3 linetaps1, vec3 linetaps2) +{ + return + pixel(xpos1.r, ypos) * linetaps1.r + + pixel(xpos1.g, ypos) * linetaps2.r + + pixel(xpos1.b, ypos) * linetaps1.g + + pixel(xpos2.r, ypos) * linetaps2.g + + pixel(xpos2.g, ypos) * linetaps1.b + + pixel(xpos2.b, ypos) * linetaps2.b; +} + +vec4 process() +{ + vec4 rgb; + vec2 pos = stretch(m_cord) + stepxy * 0.5; + vec2 f = fract(pos / stepxy); + + vec3 linetaps1 = weight((1.0 - f.x) / 2.0); + vec3 linetaps2 = weight((1.0 - f.x) / 2.0 + 0.5); + vec3 columntaps1 = weight((1.0 - f.y) / 2.0); + vec3 columntaps2 = weight((1.0 - f.y) / 2.0 + 0.5); + + //make sure all taps added together is exactly 1.0, otherwise some (very small) distortion can occur + float sum = linetaps1.r + linetaps1.g + linetaps1.b + linetaps2.r + linetaps2.g + linetaps2.b; + linetaps1 /= sum; + linetaps2 /= sum; + sum = columntaps1.r + columntaps1.g + columntaps1.b + columntaps2.r + columntaps2.g + columntaps2.b; + columntaps1 /= sum; + columntaps2 /= sum; + + vec2 xystart = (-2.5 - f) * stepxy + pos; + vec3 xpos1 = vec3(xystart.x, xystart.x + stepxy.x, xystart.x + stepxy.x * 2.0); + vec3 xpos2 = vec3(xystart.x + stepxy.x * 3.0, xystart.x + stepxy.x * 4.0, xystart.x + stepxy.x * 5.0); + + rgb.rgb = + line(xystart.y , xpos1, xpos2, linetaps1, linetaps2) * columntaps1.r + + line(xystart.y + stepxy.y , xpos1, xpos2, linetaps1, linetaps2) * columntaps2.r + + line(xystart.y + stepxy.y * 2.0, xpos1, xpos2, linetaps1, linetaps2) * columntaps1.g + + line(xystart.y + stepxy.y * 3.0, xpos1, xpos2, linetaps1, linetaps2) * columntaps2.g + + line(xystart.y + stepxy.y * 4.0, xpos1, xpos2, linetaps1, linetaps2) * columntaps1.b + + line(xystart.y + stepxy.y * 5.0, xpos1, xpos2, linetaps1, linetaps2) * columntaps2.b; + + rgb.a = m_alpha; + + return rgb; +} diff --git a/system/shaders/GL/1.2/gl_output.glsl b/system/shaders/GL/1.2/gl_output.glsl new file mode 100644 index 0000000..d3294a8 --- /dev/null +++ b/system/shaders/GL/1.2/gl_output.glsl @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2010-2017 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + + +#if defined(XBMC_DITHER) +uniform sampler2D m_dither; +uniform float m_ditherquant; +uniform vec2 m_dithersize; +#endif +#if defined(KODI_3DLUT) +uniform float m_CLUTsize; +uniform sampler3D m_CLUT; +#endif + +void main() +{ + vec4 rgb = process(); + +#if defined(KODI_3DLUT) + // FIXME: can this be optimized? + rgb = texture3D(m_CLUT, (rgb.rgb*(m_CLUTsize-1.0) + 0.5) / m_CLUTsize); +#endif + +#if defined(XBMC_FULLRANGE) +#if __VERSION__ <= 120 + rgb = (rgb-(16.0/255.0)) * 255.0/219.0; +#else + rgb = clamp((rgb-(16.0/255.0)) * 255.0/219.0, 0, 1); +#endif +#endif + +#if defined(XBMC_DITHER) + vec2 ditherpos = gl_FragCoord.xy / m_dithersize; + // ditherval is multiplied by 65536/(dither_size^2) to make it [0,1[ + // FIXME: scale dither values before uploading? + float ditherval = texture2D(m_dither, ditherpos).r * 16.0; + rgb = floor(rgb * m_ditherquant + ditherval) / m_ditherquant; +#endif + + gl_FragColor = rgb; +} diff --git a/system/shaders/GL/1.2/gl_shader_frag_default.glsl b/system/shaders/GL/1.2/gl_shader_frag_default.glsl new file mode 100644 index 0000000..d9aba5f --- /dev/null +++ b/system/shaders/GL/1.2/gl_shader_frag_default.glsl @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 120 + +uniform vec4 m_unicol; + +// SM_DEFAULT shader +void main () +{ + gl_FragColor = m_unicol; +} diff --git a/system/shaders/GL/1.2/gl_shader_frag_fonts.glsl b/system/shaders/GL/1.2/gl_shader_frag_fonts.glsl new file mode 100644 index 0000000..eed605f --- /dev/null +++ b/system/shaders/GL/1.2/gl_shader_frag_fonts.glsl @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 120 + +uniform sampler2D m_samp0; +varying vec4 m_cord0; +varying vec4 m_colour; + +// SM_FONTS shader +void main () +{ + gl_FragColor.r = m_colour.r; + gl_FragColor.g = m_colour.g; + gl_FragColor.b = m_colour.b; + gl_FragColor.a = m_colour.a * texture2D(m_samp0, m_cord0.xy).r; +} diff --git a/system/shaders/GL/1.2/gl_shader_frag_multi.glsl b/system/shaders/GL/1.2/gl_shader_frag_multi.glsl new file mode 100644 index 0000000..804a716 --- /dev/null +++ b/system/shaders/GL/1.2/gl_shader_frag_multi.glsl @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 120 + +uniform sampler2D m_samp0; +uniform sampler2D m_samp1; +varying vec4 m_cord0; +varying vec4 m_cord1; + +// SM_MULTI shader +void main () +{ + gl_FragColor.rgba = (texture2D(m_samp0, m_cord0.xy) * texture2D(m_samp1, m_cord1.xy)).rgba; +} diff --git a/system/shaders/GL/1.2/gl_shader_frag_multi_blendcolor.glsl b/system/shaders/GL/1.2/gl_shader_frag_multi_blendcolor.glsl new file mode 100644 index 0000000..20622d2 --- /dev/null +++ b/system/shaders/GL/1.2/gl_shader_frag_multi_blendcolor.glsl @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 120 + +uniform sampler2D m_samp0; +uniform sampler2D m_samp1; +varying vec4 m_cord0; +varying vec4 m_cord1; +uniform vec4 m_unicol; + +// SM_MULTI shader +void main () +{ + gl_FragColor.rgba = m_unicol * texture2D(m_samp0, m_cord0.xy) * texture2D(m_samp1, m_cord1.xy); +} diff --git a/system/shaders/GL/1.2/gl_shader_frag_texture.glsl b/system/shaders/GL/1.2/gl_shader_frag_texture.glsl new file mode 100644 index 0000000..c15681f --- /dev/null +++ b/system/shaders/GL/1.2/gl_shader_frag_texture.glsl @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 120 + +uniform sampler2D m_samp0; +uniform vec4 m_unicol; +varying vec4 m_cord0; + +// SM_TEXTURE shader +void main () +{ + gl_FragColor.rgba = vec4(texture2D(m_samp0, m_cord0.xy).rgba * m_unicol); +} diff --git a/system/shaders/GL/1.2/gl_shader_frag_texture_noblend.glsl b/system/shaders/GL/1.2/gl_shader_frag_texture_noblend.glsl new file mode 100644 index 0000000..16a1f8b --- /dev/null +++ b/system/shaders/GL/1.2/gl_shader_frag_texture_noblend.glsl @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 120 + +uniform sampler2D m_samp0; +varying vec4 m_cord0; + +// SM_TEXTURE_NOBLEND shader +void main () +{ + gl_FragColor.rgba = vec4(texture2D(m_samp0, m_cord0.xy).rgba); +} diff --git a/system/shaders/GL/1.2/gl_shader_vert.glsl b/system/shaders/GL/1.2/gl_shader_vert.glsl new file mode 100644 index 0000000..7c10b5f --- /dev/null +++ b/system/shaders/GL/1.2/gl_shader_vert.glsl @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 120 + +attribute vec4 m_attrpos; +attribute vec4 m_attrcol; +attribute vec4 m_attrcord0; +attribute vec4 m_attrcord1; +varying vec4 m_cord0; +varying vec4 m_cord1; +varying vec4 m_colour; +uniform mat4 m_proj; +uniform mat4 m_model; + +void main () +{ + mat4 mvp = m_proj * m_model; + gl_Position = mvp * m_attrpos; + m_colour = m_attrcol; + m_cord0 = m_attrcord0; + m_cord1 = m_attrcord1; +} diff --git a/system/shaders/GL/1.2/gl_shader_vert_default.glsl b/system/shaders/GL/1.2/gl_shader_vert_default.glsl new file mode 100644 index 0000000..554e15c --- /dev/null +++ b/system/shaders/GL/1.2/gl_shader_vert_default.glsl @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 120 + +attribute vec4 m_attrpos; +uniform mat4 m_proj; +uniform mat4 m_model; + +void main () +{ + mat4 mvp = m_proj * m_model; + gl_Position = mvp * m_attrpos; +} diff --git a/system/shaders/GL/1.2/gl_stretch.glsl b/system/shaders/GL/1.2/gl_stretch.glsl new file mode 100644 index 0000000..9cc3388 --- /dev/null +++ b/system/shaders/GL/1.2/gl_stretch.glsl @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 120 + +uniform sampler2D img; +uniform float m_stretch; +uniform float m_alpha; +varying vec2 m_cord; + +vec2 stretch(vec2 pos) +{ + // our transform should map [0..1] to itself, with f(0) = 0, f(1) = 1, f(0.5) = 0.5, and f'(0.5) = b. + // a simple curve to do this is g(x) = b(x-0.5) + (1-b)2^(n-1)(x-0.5)^n + 0.5 + // where the power preserves sign. n = 2 is the simplest non-linear case (required when b != 1) + float x = pos.x - 0.5; + return vec2(mix(x * abs(x) * 2.0, x, m_stretch) + 0.5, pos.y); +} + +void main() +{ + gl_FragColor.rgb = texture2D(img, stretch(m_cord)).rgb; + gl_FragColor.a = m_alpha; +} diff --git a/system/shaders/GL/1.2/gl_videofilter_frag.glsl b/system/shaders/GL/1.2/gl_videofilter_frag.glsl new file mode 100644 index 0000000..ff7af3b --- /dev/null +++ b/system/shaders/GL/1.2/gl_videofilter_frag.glsl @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 120 + +uniform sampler2D img; +varying vec2 m_cord; + +void main() +{ + gl_FragColor.rgb = texture2D(img, m_cord).rgb; + gl_FragColor.a = gl_Color.a; +} diff --git a/system/shaders/GL/1.2/gl_videofilter_vertex.glsl b/system/shaders/GL/1.2/gl_videofilter_vertex.glsl new file mode 100644 index 0000000..aa124b5 --- /dev/null +++ b/system/shaders/GL/1.2/gl_videofilter_vertex.glsl @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 120 + +attribute vec4 m_attrpos; +attribute vec2 m_attrcord; +varying vec2 m_cord; +uniform mat4 m_proj; +uniform mat4 m_model; + +void main () +{ + mat4 mvp = m_proj * m_model; + gl_Position = mvp * m_attrpos; + m_cord = m_attrcord; +} diff --git a/system/shaders/GL/1.2/gl_yuv2rgb_basic.glsl b/system/shaders/GL/1.2/gl_yuv2rgb_basic.glsl new file mode 100644 index 0000000..57c3a17 --- /dev/null +++ b/system/shaders/GL/1.2/gl_yuv2rgb_basic.glsl @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#if(XBMC_texture_rectangle) +# extension GL_ARB_texture_rectangle : enable +# define texture2D texture2DRect +# define sampler2D sampler2DRect +#endif + +uniform sampler2D m_sampY; +uniform sampler2D m_sampU; +uniform sampler2D m_sampV; +varying vec2 m_cordY; +varying vec2 m_cordU; +varying vec2 m_cordV; +uniform vec2 m_step; +uniform mat4 m_yuvmat; +uniform float m_stretch; +uniform mat3 m_primMat; +uniform float m_gammaDstInv; +uniform float m_gammaSrc; +uniform float m_alpha; + +vec2 stretch(vec2 pos) +{ +#if (XBMC_STRETCH) + // our transform should map [0..1] to itself, with f(0) = 0, f(1) = 1, f(0.5) = 0.5, and f'(0.5) = b. + // a simple curve to do this is g(x) = b(x-0.5) + (1-b)2^(n-1)(x-0.5)^n + 0.5 + // where the power preserves sign. n = 2 is the simplest non-linear case (required when b != 1) + #if(XBMC_texture_rectangle) + float x = (pos.x * m_step.x) - 0.5; + return vec2((mix(2.0 * x * abs(x), x, m_stretch) + 0.5) / m_step.x, pos.y); + #else + float x = pos.x - 0.5; + return vec2(mix(2.0 * x * abs(x), x, m_stretch) + 0.5, pos.y); + #endif +#else + return pos; +#endif +} + +vec4 process() +{ + vec4 rgb; +#if defined(XBMC_YV12) + + vec4 yuv; + yuv.rgba = vec4( texture2D(m_sampY, stretch(m_cordY)).r + , texture2D(m_sampU, stretch(m_cordU)).r + , texture2D(m_sampV, stretch(m_cordV)).r + , 1.0 ); + + rgb = m_yuvmat * yuv; + rgb.a = m_alpha; + +#elif defined(XBMC_NV12) + + vec4 yuv; + yuv.rgba = vec4( texture2D(m_sampY, stretch(m_cordY)).r + , texture2D(m_sampU, stretch(m_cordU)).rg + , 1.0 ); + + rgb = m_yuvmat * yuv; + rgb.a = m_alpha; + +#elif defined(XBMC_YUY2) || defined(XBMC_UYVY) + +#if(XBMC_texture_rectangle) + vec2 stepxy = vec2(1.0, 1.0); + vec2 pos = stretch(m_cordY); + pos = vec2(pos.x - 0.25, pos.y); + vec2 f = fract(pos); +#else + vec2 stepxy = m_step; + vec2 pos = stretch(m_cordY); + pos = vec2(pos.x - stepxy.x * 0.25, pos.y); + vec2 f = fract(pos / stepxy); +#endif + + //y axis will be correctly interpolated by opengl + //x axis will not, so we grab two pixels at the center of two columns and interpolate ourselves + vec4 c1 = texture2D(m_sampY, vec2(pos.x + (0.5 - f.x) * stepxy.x, pos.y)); + vec4 c2 = texture2D(m_sampY, vec2(pos.x + (1.5 - f.x) * stepxy.x, pos.y)); + + /* each pixel has two Y subpixels and one UV subpixel + YUV Y YUV + check if we're left or right of the middle Y subpixel and interpolate accordingly*/ +#ifdef XBMC_YUY2 //BGRA = YUYV + float leftY = mix(c1.b, c1.r, f.x * 2.0); + float rightY = mix(c1.r, c2.b, f.x * 2.0 - 1.0); + vec2 outUV = mix(c1.ga, c2.ga, f.x); +#else //BGRA = UYVY + float leftY = mix(c1.g, c1.a, f.x * 2.0); + float rightY = mix(c1.a, c2.g, f.x * 2.0 - 1.0); + vec2 outUV = mix(c1.br, c2.br, f.x); +#endif //XBMC_YUY2 + + float outY = mix(leftY, rightY, step(0.5, f.x)); + + vec4 yuv = vec4(outY, outUV, 1.0); + rgb = m_yuvmat * yuv; + + rgb.a = m_alpha; + +#endif + +#if defined(XBMC_COL_CONVERSION) + rgb.rgb = pow(max(vec3(0), rgb.rgb), vec3(m_gammaSrc)); + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); + rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); +#endif + + return rgb; +} diff --git a/system/shaders/GL/1.2/gl_yuv2rgb_vertex.glsl b/system/shaders/GL/1.2/gl_yuv2rgb_vertex.glsl new file mode 100644 index 0000000..cdf3c56 --- /dev/null +++ b/system/shaders/GL/1.2/gl_yuv2rgb_vertex.glsl @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +attribute vec4 m_attrpos; +attribute vec2 m_attrcordY; +attribute vec2 m_attrcordU; +attribute vec2 m_attrcordV; +varying vec2 m_cordY; +varying vec2 m_cordU; +varying vec2 m_cordV; +uniform mat4 m_proj; +uniform mat4 m_model; + +void main () +{ + mat4 mvp = m_proj * m_model; + gl_Position = mvp * m_attrpos; + m_cordY = m_attrcordY; + m_cordU = m_attrcordU; + m_cordV = m_attrcordV; +} diff --git a/system/shaders/GL/1.5/gl_convolution-4x4.glsl b/system/shaders/GL/1.5/gl_convolution-4x4.glsl new file mode 100644 index 0000000..2a6404e --- /dev/null +++ b/system/shaders/GL/1.5/gl_convolution-4x4.glsl @@ -0,0 +1,71 @@ +#version 150 + +uniform sampler2D img; +uniform vec2 stepxy; +uniform float m_stretch; +uniform float m_alpha; +in vec2 m_cord; +out vec4 fragColor; +uniform sampler1D kernelTex; + +vec4 weight(float pos) +{ +#if defined(HAS_FLOAT_TEXTURE) + return texture(kernelTex, pos); +#else + return texture(kernelTex, pos) * 2.0 - 1.0; +#endif +} + +vec2 stretch(vec2 pos) +{ +#if (XBMC_STRETCH) + // our transform should map [0..1] to itself, with f(0) = 0, f(1) = 1, f(0.5) = 0.5, and f'(0.5) = b. + // a simple curve to do this is g(x) = b(x-0.5) + (1-b)2^(n-1)(x-0.5)^n + 0.5 + // where the power preserves sign. n = 2 is the simplest non-linear case (required when b != 1) + float x = pos.x - 0.5; + return vec2(mix(x * abs(x) * 2.0, x, m_stretch) + 0.5, pos.y); +#else + return pos; +#endif +} + +vec3 pixel(float xpos, float ypos) +{ + return texture(img, vec2(xpos, ypos)).rgb; +} + +vec3 line (float ypos, vec4 xpos, vec4 linetaps) +{ + return + pixel(xpos.r, ypos) * linetaps.r + + pixel(xpos.g, ypos) * linetaps.g + + pixel(xpos.b, ypos) * linetaps.b + + pixel(xpos.a, ypos) * linetaps.a; +} + +vec4 process() +{ + vec4 rgb; + vec2 pos = stretch(m_cord) + stepxy * 0.5; + vec2 f = fract(pos / stepxy); + + vec4 linetaps = weight(1.0 - f.x); + vec4 columntaps = weight(1.0 - f.y); + + //make sure all taps added together is exactly 1.0, otherwise some (very small) distortion can occur + linetaps /= linetaps.r + linetaps.g + linetaps.b + linetaps.a; + columntaps /= columntaps.r + columntaps.g + columntaps.b + columntaps.a; + + vec2 xystart = (-1.5 - f) * stepxy + pos; + vec4 xpos = vec4(xystart.x, xystart.x + stepxy.x, xystart.x + stepxy.x * 2.0, xystart.x + stepxy.x * 3.0); + + rgb.rgb = + line(xystart.y , xpos, linetaps) * columntaps.r + + line(xystart.y + stepxy.y , xpos, linetaps) * columntaps.g + + line(xystart.y + stepxy.y * 2.0, xpos, linetaps) * columntaps.b + + line(xystart.y + stepxy.y * 3.0, xpos, linetaps) * columntaps.a; + + rgb.a = m_alpha; + return rgb; +} diff --git a/system/shaders/GL/1.5/gl_convolution-6x6.glsl b/system/shaders/GL/1.5/gl_convolution-6x6.glsl new file mode 100644 index 0000000..b4410cc --- /dev/null +++ b/system/shaders/GL/1.5/gl_convolution-6x6.glsl @@ -0,0 +1,83 @@ +#version 150 + +uniform sampler2D img; +uniform vec2 stepxy; +uniform float m_stretch; +uniform float m_alpha; +in vec2 m_cord; +out vec4 fragColor; +uniform sampler1D kernelTex; + +vec3 weight(float pos) +{ +#if defined(HAS_FLOAT_TEXTURE) + return texture(kernelTex, pos).rgb; +#else + return texture(kernelTex, pos).rgb * 2.0 - 1.0; +#endif +} + +vec2 stretch(vec2 pos) +{ +#if (XBMC_STRETCH) + // our transform should map [0..1] to itself, with f(0) = 0, f(1) = 1, f(0.5) = 0.5, and f'(0.5) = b. + // a simple curve to do this is g(x) = b(x-0.5) + (1-b)2^(n-1)(x-0.5)^n + 0.5 + // where the power preserves sign. n = 2 is the simplest non-linear case (required when b != 1) + float x = pos.x - 0.5; + return vec2(mix(x * abs(x) * 2.0, x, m_stretch) + 0.5, pos.y); +#else + return pos; +#endif +} + +vec3 pixel(float xpos, float ypos) +{ + return texture(img, vec2(xpos, ypos)).rgb; +} + +vec3 line (float ypos, vec3 xpos1, vec3 xpos2, vec3 linetaps1, vec3 linetaps2) +{ + return + pixel(xpos1.r, ypos) * linetaps1.r + + pixel(xpos1.g, ypos) * linetaps2.r + + pixel(xpos1.b, ypos) * linetaps1.g + + pixel(xpos2.r, ypos) * linetaps2.g + + pixel(xpos2.g, ypos) * linetaps1.b + + pixel(xpos2.b, ypos) * linetaps2.b; +} + +vec4 process() +{ + vec4 rgb; + vec2 pos = stretch(m_cord) + stepxy * 0.5; + vec2 f = fract(pos / stepxy); + + vec3 linetaps1 = weight((1.0 - f.x) / 2.0); + vec3 linetaps2 = weight((1.0 - f.x) / 2.0 + 0.5); + vec3 columntaps1 = weight((1.0 - f.y) / 2.0); + vec3 columntaps2 = weight((1.0 - f.y) / 2.0 + 0.5); + + //make sure all taps added together is exactly 1.0, otherwise some (very small) distortion can occur + float sum = linetaps1.r + linetaps1.g + linetaps1.b + linetaps2.r + linetaps2.g + linetaps2.b; + linetaps1 /= sum; + linetaps2 /= sum; + sum = columntaps1.r + columntaps1.g + columntaps1.b + columntaps2.r + columntaps2.g + columntaps2.b; + columntaps1 /= sum; + columntaps2 /= sum; + + vec2 xystart = (-2.5 - f) * stepxy + pos; + vec3 xpos1 = vec3(xystart.x, xystart.x + stepxy.x, xystart.x + stepxy.x * 2.0); + vec3 xpos2 = vec3(xystart.x + stepxy.x * 3.0, xystart.x + stepxy.x * 4.0, xystart.x + stepxy.x * 5.0); + + rgb.rgb = + line(xystart.y , xpos1, xpos2, linetaps1, linetaps2) * columntaps1.r + + line(xystart.y + stepxy.y , xpos1, xpos2, linetaps1, linetaps2) * columntaps2.r + + line(xystart.y + stepxy.y * 2.0, xpos1, xpos2, linetaps1, linetaps2) * columntaps1.g + + line(xystart.y + stepxy.y * 3.0, xpos1, xpos2, linetaps1, linetaps2) * columntaps2.g + + line(xystart.y + stepxy.y * 4.0, xpos1, xpos2, linetaps1, linetaps2) * columntaps1.b + + line(xystart.y + stepxy.y * 5.0, xpos1, xpos2, linetaps1, linetaps2) * columntaps2.b; + + rgb.a = m_alpha; + + return rgb; +} diff --git a/system/shaders/GL/1.5/gl_output.glsl b/system/shaders/GL/1.5/gl_output.glsl new file mode 100644 index 0000000..9823102 --- /dev/null +++ b/system/shaders/GL/1.5/gl_output.glsl @@ -0,0 +1,37 @@ +#if defined(XBMC_DITHER) +uniform sampler2D m_dither; +uniform float m_ditherquant; +uniform vec2 m_dithersize; +#endif +#if defined(KODI_3DLUT) +uniform float m_CLUTsize; +uniform sampler3D m_CLUT; +#endif + +void main() +{ + vec4 rgb = process(); + +#if defined(KODI_3DLUT) + // FIXME: can this be optimized? + rgb = texture(m_CLUT, (rgb.rgb*(m_CLUTsize-1.0) + 0.5) / m_CLUTsize); +#endif + +#if defined(XBMC_FULLRANGE) +#if __VERSION__ <= 120 + rgb = (rgb-(16.0/255.0)) * 255.0/219.0; +#else + rgb = clamp((rgb-(16.0/255.0)) * 255.0/219.0, 0, 1); +#endif +#endif + +#if defined(XBMC_DITHER) + vec2 ditherpos = gl_FragCoord.xy / m_dithersize; + // ditherval is multiplied by 65536/(dither_size^2) to make it [0,1[ + // FIXME: scale dither values before uploading? + float ditherval = texture(m_dither, ditherpos).r * 16.0; + rgb = floor(rgb * m_ditherquant + ditherval) / m_ditherquant; +#endif + + fragColor = rgb; +} diff --git a/system/shaders/GL/1.5/gl_shader_frag_default.glsl b/system/shaders/GL/1.5/gl_shader_frag_default.glsl new file mode 100644 index 0000000..d57f576 --- /dev/null +++ b/system/shaders/GL/1.5/gl_shader_frag_default.glsl @@ -0,0 +1,14 @@ +#version 150 + +uniform vec4 m_unicol; +out vec4 fragColor; + +// SM_DEFAULT shader +void main () +{ + fragColor = m_unicol; +#if defined(KODI_LIMITED_RANGE) + fragColor.rgb *= (235.0-16.0) / 255.0; + fragColor.rgb += 16.0 / 255.0; +#endif +} diff --git a/system/shaders/GL/1.5/gl_shader_frag_fonts.glsl b/system/shaders/GL/1.5/gl_shader_frag_fonts.glsl new file mode 100644 index 0000000..1de6ddc --- /dev/null +++ b/system/shaders/GL/1.5/gl_shader_frag_fonts.glsl @@ -0,0 +1,19 @@ +#version 150 + +uniform sampler2D m_samp0; +in vec4 m_cord0; +in vec4 m_colour; +out vec4 fragColor; + +// SM_FONTS shader +void main () +{ + fragColor.r = m_colour.r; + fragColor.g = m_colour.g; + fragColor.b = m_colour.b; + fragColor.a = m_colour.a * texture(m_samp0, m_cord0.xy).r; +#if defined(KODI_LIMITED_RANGE) + fragColor.rgb *= (235.0-16.0) / 255.0; + fragColor.rgb += 16.0 / 255.0; +#endif +} diff --git a/system/shaders/GL/1.5/gl_shader_frag_multi.glsl b/system/shaders/GL/1.5/gl_shader_frag_multi.glsl new file mode 100644 index 0000000..3e6412b --- /dev/null +++ b/system/shaders/GL/1.5/gl_shader_frag_multi.glsl @@ -0,0 +1,17 @@ +#version 150 + +uniform sampler2D m_samp0; +uniform sampler2D m_samp1; +in vec4 m_cord0; +in vec4 m_cord1; +out vec4 fragColor; + +// SM_MULTI shader +void main () +{ + fragColor.rgba = (texture(m_samp0, m_cord0.xy) * texture(m_samp1, m_cord1.xy)).rgba; +#if defined(KODI_LIMITED_RANGE) + fragColor.rgb *= (235.0-16.0) / 255.0; + fragColor.rgb += 16.0 / 255.0; +#endif +} diff --git a/system/shaders/GL/1.5/gl_shader_frag_multi_blendcolor.glsl b/system/shaders/GL/1.5/gl_shader_frag_multi_blendcolor.glsl new file mode 100644 index 0000000..96310ce --- /dev/null +++ b/system/shaders/GL/1.5/gl_shader_frag_multi_blendcolor.glsl @@ -0,0 +1,18 @@ +#version 150 + +uniform sampler2D m_samp0; +uniform sampler2D m_samp1; +uniform vec4 m_unicol; +in vec4 m_cord0; +in vec4 m_cord1; +out vec4 fragColor; + +// SM_MULTI shader +void main () +{ + fragColor.rgba = m_unicol * texture(m_samp0, m_cord0.xy) * texture(m_samp1, m_cord1.xy); +#if defined(KODI_LIMITED_RANGE) + fragColor.rgb *= (235.0-16.0) / 255.0; + fragColor.rgb += 16.0 / 255.0; +#endif +} diff --git a/system/shaders/GL/1.5/gl_shader_frag_texture.glsl b/system/shaders/GL/1.5/gl_shader_frag_texture.glsl new file mode 100644 index 0000000..71b1d21 --- /dev/null +++ b/system/shaders/GL/1.5/gl_shader_frag_texture.glsl @@ -0,0 +1,16 @@ +#version 150 + +uniform sampler2D m_samp0; +uniform vec4 m_unicol; +in vec4 m_cord0; +out vec4 fragColor; + +// SM_TEXTURE shader +void main () +{ + fragColor.rgba = vec4(texture(m_samp0, m_cord0.xy).rgba * m_unicol); +#if defined(KODI_LIMITED_RANGE) + fragColor.rgb *= (235.0-16.0) / 255.0; + fragColor.rgb += 16.0 / 255.0; +#endif +} diff --git a/system/shaders/GL/1.5/gl_shader_frag_texture_lim.glsl b/system/shaders/GL/1.5/gl_shader_frag_texture_lim.glsl new file mode 100644 index 0000000..def4349 --- /dev/null +++ b/system/shaders/GL/1.5/gl_shader_frag_texture_lim.glsl @@ -0,0 +1,15 @@ +#version 150 + +uniform sampler2D m_samp0; +uniform vec4 m_unicol; +in vec4 m_cord0; +out vec4 fragColor; + +// SM_TEXTURE shader +void main () +{ + fragColor.rgba = vec4(texture(m_samp0, m_cord0.xy).rgba * m_unicol); +#if !defined(KODI_LIMITED_RANGE) + fragColor.rgb = clamp((fragColor.rgb-(16.0/255.0)) * 255.0/219.0, 0, 1); +#endif +} diff --git a/system/shaders/GL/1.5/gl_shader_frag_texture_noblend.glsl b/system/shaders/GL/1.5/gl_shader_frag_texture_noblend.glsl new file mode 100644 index 0000000..e5d627e --- /dev/null +++ b/system/shaders/GL/1.5/gl_shader_frag_texture_noblend.glsl @@ -0,0 +1,15 @@ +#version 150 + +uniform sampler2D m_samp0; +in vec4 m_cord0; +out vec4 fragColor; + +// SM_TEXTURE_NOBLEND shader +void main () +{ + fragColor.rgba = vec4(texture(m_samp0, m_cord0.xy).rgba); +#if defined(KODI_LIMITED_RANGE) + fragColor.rgb *= (235.0-16.0) / 255.0; + fragColor.rgb += 16.0 / 255.0; +#endif +} diff --git a/system/shaders/GL/1.5/gl_shader_vert.glsl b/system/shaders/GL/1.5/gl_shader_vert.glsl new file mode 100644 index 0000000..a856831 --- /dev/null +++ b/system/shaders/GL/1.5/gl_shader_vert.glsl @@ -0,0 +1,20 @@ +#version 150 + +in vec4 m_attrpos; +in vec4 m_attrcol; +in vec4 m_attrcord0; +in vec4 m_attrcord1; +out vec4 m_cord0; +out vec4 m_cord1; +out vec4 m_colour; +uniform mat4 m_proj; +uniform mat4 m_model; + +void main () +{ + mat4 mvp = m_proj * m_model; + gl_Position = mvp * m_attrpos; + m_colour = m_attrcol; + m_cord0 = m_attrcord0; + m_cord1 = m_attrcord1; +} diff --git a/system/shaders/GL/1.5/gl_shader_vert_default.glsl b/system/shaders/GL/1.5/gl_shader_vert_default.glsl new file mode 100644 index 0000000..e4f2d7c --- /dev/null +++ b/system/shaders/GL/1.5/gl_shader_vert_default.glsl @@ -0,0 +1,11 @@ +#version 150 + +in vec4 m_attrpos; +uniform mat4 m_proj; +uniform mat4 m_model; + +void main () +{ + mat4 mvp = m_proj * m_model; + gl_Position = mvp * m_attrpos; +} diff --git a/system/shaders/GL/1.5/gl_stretch.glsl b/system/shaders/GL/1.5/gl_stretch.glsl new file mode 100644 index 0000000..9a31e54 --- /dev/null +++ b/system/shaders/GL/1.5/gl_stretch.glsl @@ -0,0 +1,22 @@ +#version 150 + +uniform sampler2D img; +uniform float m_stretch; +uniform float m_alpha; +in vec2 m_cord; +out vec4 fragColor; + +vec2 stretch(vec2 pos) +{ + // our transform should map [0..1] to itself, with f(0) = 0, f(1) = 1, f(0.5) = 0.5, and f'(0.5) = b. + // a simple curve to do this is g(x) = b(x-0.5) + (1-b)2^(n-1)(x-0.5)^n + 0.5 + // where the power preserves sign. n = 2 is the simplest non-linear case (required when b != 1) + float x = pos.x - 0.5; + return vec2(mix(x * abs(x) * 2.0, x, m_stretch) + 0.5, pos.y); +} + +void main() +{ + fragColor.rgb = texture(img, stretch(m_cord)).rgb; + fragColor.a = m_alpha; +} diff --git a/system/shaders/GL/1.5/gl_tonemap.glsl b/system/shaders/GL/1.5/gl_tonemap.glsl new file mode 100644 index 0000000..a70dca2 --- /dev/null +++ b/system/shaders/GL/1.5/gl_tonemap.glsl @@ -0,0 +1,50 @@ +#if (defined(KODI_TONE_MAPPING_REINHARD) || defined(KODI_TONE_MAPPING_ACES) || defined(KODI_TONE_MAPPING_HABLE)) +const float ST2084_m1 = 2610.0 / (4096.0 * 4.0); +const float ST2084_m2 = (2523.0 / 4096.0) * 128.0; +const float ST2084_c1 = 3424.0 / 4096.0; +const float ST2084_c2 = (2413.0 / 4096.0) * 32.0; +const float ST2084_c3 = (2392.0 / 4096.0) * 32.0; +#endif + +#if defined(KODI_TONE_MAPPING_REINHARD) +float reinhard(float x) +{ + return x * (1.0 + x / (m_toneP1 * m_toneP1)) / (1.0 + x); +} +#endif + +#if defined(KODI_TONE_MAPPING_ACES) +vec3 aces(vec3 x) +{ + float A = 2.51; + float B = 0.03; + float C = 2.43; + float D = 0.59; + float E = 0.14; + return (x * (A * x + B)) / (x * (C * x + D) + E); +} +#endif + +#if defined(KODI_TONE_MAPPING_HABLE) +vec3 hable(vec3 x) +{ + float A = 0.15; + float B = 0.5; + float C = 0.1; + float D = 0.2; + float E = 0.02; + float F = 0.3; + return ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F; +} +#endif + +#if (defined(KODI_TONE_MAPPING_ACES) || defined(KODI_TONE_MAPPING_HABLE)) +vec3 inversePQ(vec3 x) +{ + x = pow(max(x, 0.0), vec3(1.0 / ST2084_m2)); + x = max(x - ST2084_c1, 0.0) / (ST2084_c2 - ST2084_c3 * x); + x = pow(x, vec3(1.0 / ST2084_m1)); + return x; +} +#endif + diff --git a/system/shaders/GL/1.5/gl_videofilter_frag.glsl b/system/shaders/GL/1.5/gl_videofilter_frag.glsl new file mode 100644 index 0000000..2eb4155 --- /dev/null +++ b/system/shaders/GL/1.5/gl_videofilter_frag.glsl @@ -0,0 +1,12 @@ +#version 150 + +uniform sampler2D img; +uniform float m_alpha; +in vec2 m_cord; +out vec4 fragColor; + +void main() +{ + fragColor = texture(img, m_cord); + fragColor.a = m_alpha; +} diff --git a/system/shaders/GL/1.5/gl_videofilter_vertex.glsl b/system/shaders/GL/1.5/gl_videofilter_vertex.glsl new file mode 100644 index 0000000..edb8847 --- /dev/null +++ b/system/shaders/GL/1.5/gl_videofilter_vertex.glsl @@ -0,0 +1,14 @@ +#version 150 + +in vec4 m_attrpos; +in vec2 m_attrcord; +out vec2 m_cord; +uniform mat4 m_proj; +uniform mat4 m_model; + +void main () +{ + mat4 mvp = m_proj * m_model; + gl_Position = mvp * m_attrpos; + m_cord = m_attrcord; +} diff --git a/system/shaders/GL/1.5/gl_yuv2rgb_basic.glsl b/system/shaders/GL/1.5/gl_yuv2rgb_basic.glsl new file mode 100644 index 0000000..7d5605c --- /dev/null +++ b/system/shaders/GL/1.5/gl_yuv2rgb_basic.glsl @@ -0,0 +1,123 @@ +#version 150 + +#if(XBMC_texture_rectangle) +# define texture2D texture2DRect +# define sampler2D sampler2DRect +#endif + +uniform sampler2D m_sampY; +uniform sampler2D m_sampU; +uniform sampler2D m_sampV; +uniform vec2 m_step; +uniform mat4 m_yuvmat; +uniform float m_stretch; +uniform float m_alpha; +uniform mat3 m_primMat; +uniform float m_gammaDstInv; +uniform float m_gammaSrc; +uniform float m_toneP1; +uniform float m_luminance; +uniform vec3 m_coefsDst; +in vec2 m_cordY; +in vec2 m_cordU; +in vec2 m_cordV; +out vec4 fragColor; + +vec2 stretch(vec2 pos) +{ +#if (XBMC_STRETCH) + // our transform should map [0..1] to itself, with f(0) = 0, f(1) = 1, f(0.5) = 0.5, and f'(0.5) = b. + // a simple curve to do this is g(x) = b(x-0.5) + (1-b)2^(n-1)(x-0.5)^n + 0.5 + // where the power preserves sign. n = 2 is the simplest non-linear case (required when b != 1) + #if(XBMC_texture_rectangle) + float x = (pos.x * m_step.x) - 0.5; + return vec2((mix(2.0 * x * abs(x), x, m_stretch) + 0.5) / m_step.x, pos.y); + #else + float x = pos.x - 0.5; + return vec2(mix(2.0 * x * abs(x), x, m_stretch) + 0.5, pos.y); + #endif +#else + return pos; +#endif +} + +vec4 process() +{ + vec4 rgb; + vec4 yuv; + +#if defined(XBMC_YV12) + + yuv.rgba = vec4( texture(m_sampY, stretch(m_cordY)).r + , texture(m_sampU, stretch(m_cordU)).r + , texture(m_sampV, stretch(m_cordV)).r + , 1.0 ); + +#elif defined(XBMC_NV12) + + yuv.rgba = vec4( texture(m_sampY, stretch(m_cordY)).r + , texture(m_sampU, stretch(m_cordU)).rg + , 1.0 ); + +#elif defined(XBMC_YUY2) || defined(XBMC_UYVY) + + vec2 stepxy = m_step; + vec2 pos = stretch(m_cordY); + pos = vec2(pos.x - stepxy.x * 0.25, pos.y); + vec2 f = fract(pos / stepxy); + + //y axis will be correctly interpolated by opengl + //x axis will not, so we grab two pixels at the center of two columns and interpolate ourselves + vec4 c1 = texture(m_sampY, vec2(pos.x + (0.5 - f.x) * stepxy.x, pos.y)); + vec4 c2 = texture(m_sampY, vec2(pos.x + (1.5 - f.x) * stepxy.x, pos.y)); + + /* each pixel has two Y subpixels and one UV subpixel + YUV Y YUV + check if we're left or right of the middle Y subpixel and interpolate accordingly*/ +#ifdef XBMC_YUY2 //BGRA = YUYV + float leftY = mix(c1.b, c1.r, f.x * 2.0); + float rightY = mix(c1.r, c2.b, f.x * 2.0 - 1.0); + vec2 outUV = mix(c1.ga, c2.ga, f.x); +#else //BGRA = UYVY + float leftY = mix(c1.g, c1.a, f.x * 2.0); + float rightY = mix(c1.a, c2.g, f.x * 2.0 - 1.0); + vec2 outUV = mix(c1.br, c2.br, f.x); +#endif //XBMC_YUY2 + + float outY = mix(leftY, rightY, step(0.5, f.x)); + + yuv = vec4(outY, outUV, 1.0); + +#endif + + rgb = m_yuvmat * yuv; + rgb.a = m_alpha; + +#if defined(XBMC_COL_CONVERSION) + rgb.rgb = pow(max(vec3(0), rgb.rgb), vec3(m_gammaSrc)); + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); + rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); + +#if defined(KODI_TONE_MAPPING_REINHARD) + float luma = dot(rgb.rgb, m_coefsDst); + rgb.rgb *= reinhard(luma) / luma; + +#elif defined(KODI_TONE_MAPPING_ACES) + rgb.rgb = inversePQ(rgb.rgb); + rgb.rgb *= (10000.0 / m_luminance) * (2.0 / m_toneP1); + rgb.rgb = aces(rgb.rgb); + rgb.rgb *= (1.24 / m_toneP1); + rgb.rgb = pow(rgb.rgb, vec3(0.27)); + +#elif defined(KODI_TONE_MAPPING_HABLE) + rgb.rgb = inversePQ(rgb.rgb); + rgb.rgb *= m_toneP1; + float wp = m_luminance / 100.0; + rgb.rgb = hable(rgb.rgb * wp) / hable(vec3(wp)); + rgb.rgb = pow(rgb.rgb, vec3(1.0 / 2.2)); +#endif + +#endif + + return rgb; +} diff --git a/system/shaders/GL/1.5/gl_yuv2rgb_vertex.glsl b/system/shaders/GL/1.5/gl_yuv2rgb_vertex.glsl new file mode 100644 index 0000000..4772bd4 --- /dev/null +++ b/system/shaders/GL/1.5/gl_yuv2rgb_vertex.glsl @@ -0,0 +1,20 @@ +#version 150 + +uniform mat4 m_proj; +uniform mat4 m_model; +in vec4 m_attrpos; +in vec2 m_attrcordY; +in vec2 m_attrcordU; +in vec2 m_attrcordV; +out vec2 m_cordY; +out vec2 m_cordU; +out vec2 m_cordV; + +void main () +{ + mat4 mvp = m_proj * m_model; + gl_Position = mvp * m_attrpos; + m_cordY = m_attrcordY; + m_cordU = m_attrcordU; + m_cordV = m_attrcordV; +} diff --git a/system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl b/system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl new file mode 100644 index 0000000..8a4658c --- /dev/null +++ b/system/shaders/GL/4.0/gl_yuv2rgb_filter4.glsl @@ -0,0 +1,141 @@ +#version 400 + +#if(XBMC_texture_rectangle) +# define texture2D texture2DRect +# define sampler2D sampler2DRect +#endif + +uniform sampler2D m_sampY; +uniform sampler2D m_sampU; +uniform sampler2D m_sampV; +uniform vec2 m_step; +uniform mat4 m_yuvmat; +uniform float m_stretch; +uniform float m_alpha; +uniform sampler1D m_kernelTex; +uniform mat3 m_primMat; +uniform float m_gammaDstInv; +uniform float m_gammaSrc; +uniform float m_toneP1; +uniform float m_luminance; +uniform vec3 m_coefsDst; +in vec2 m_cordY; +in vec2 m_cordU; +in vec2 m_cordV; +out vec4 fragColor; + +vec2 stretch(vec2 pos) +{ +#if (XBMC_STRETCH) + // our transform should map [0..1] to itself, with f(0) = 0, f(1) = 1, f(0.5) = 0.5, and f'(0.5) = b. + // a simple curve to do this is g(x) = b(x-0.5) + (1-b)2^(n-1)(x-0.5)^n + 0.5 + // where the power preserves sign. n = 2 is the simplest non-linear case (required when b != 1) + #if(XBMC_texture_rectangle) + float x = (pos.x * m_step.x) - 0.5; + return vec2((mix(2.0 * x * abs(x), x, m_stretch) + 0.5) / m_step.x, pos.y); + #else + float x = pos.x - 0.5; + return vec2(mix(2.0 * x * abs(x), x, m_stretch) + 0.5, pos.y); + #endif +#else + return pos; +#endif +} + +vec4[4] load4x4_0(sampler2D sampler, vec2 pos) +{ + vec4[4] tex4x4; + vec4 tex2x2 = textureGather(sampler, pos, 0); + tex4x4[0].xy = tex2x2.wz; + tex4x4[1].xy = tex2x2.xy; + tex2x2 = textureGatherOffset(sampler, pos, ivec2(2,0), 0); + tex4x4[0].zw = tex2x2.wz; + tex4x4[1].zw = tex2x2.xy; + tex2x2 = textureGatherOffset(sampler, pos, ivec2(0,2), 0); + tex4x4[2].xy = tex2x2.wz; + tex4x4[3].xy = tex2x2.xy; + tex2x2 = textureGatherOffset(sampler, pos, ivec2(2,2), 0); + tex4x4[2].zw = tex2x2.wz; + tex4x4[3].zw = tex2x2.xy; + return tex4x4; +} + +float filter_0(sampler2D sampler, vec2 coord) +{ + vec2 pos = coord + m_step * 0.5; + vec2 f = fract(pos / m_step); + + vec4 linetaps = texture(m_kernelTex, 1.0 - f.x); + vec4 coltaps = texture(m_kernelTex, 1.0 - f.y); + linetaps /= linetaps.r + linetaps.g + linetaps.b + linetaps.a; + coltaps /= coltaps.r + coltaps.g + coltaps.b + coltaps.a; + mat4 conv; + conv[0] = linetaps * coltaps.x; + conv[1] = linetaps * coltaps.y; + conv[2] = linetaps * coltaps.z; + conv[3] = linetaps * coltaps.w; + + vec2 startPos = (-1.0 - f) * m_step + pos; + vec4[4] tex4x4 = load4x4_0(sampler, startPos); + vec4 imageLine0 = tex4x4[0]; + vec4 imageLine1 = tex4x4[1]; + vec4 imageLine2 = tex4x4[2]; + vec4 imageLine3 = tex4x4[3]; + + return dot(imageLine0, conv[0]) + + dot(imageLine1, conv[1]) + + dot(imageLine2, conv[2]) + + dot(imageLine3, conv[3]); +} + +vec4 process() +{ + vec4 rgb; + vec4 yuv; + +#if defined(XBMC_YV12) + + yuv = vec4(filter_0(m_sampY, stretch(m_cordY)), + texture(m_sampU, stretch(m_cordU)).r, + texture(m_sampV, stretch(m_cordV)).r, + 1.0); + +#elif defined(XBMC_NV12) + + yuv = vec4(filter_0(m_sampY, stretch(m_cordY)), + texture(m_sampU, stretch(m_cordU)).rg, + 1.0); + +#endif + + rgb = m_yuvmat * yuv; + rgb.a = m_alpha; + +#if defined(XBMC_COL_CONVERSION) + rgb.rgb = pow(max(vec3(0), rgb.rgb), vec3(m_gammaSrc)); + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); + rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); + +#if defined(KODI_TONE_MAPPING_REINHARD) + float luma = dot(rgb.rgb, m_coefsDst); + rgb.rgb *= reinhard(luma) / luma; + +#elif defined(KODI_TONE_MAPPING_ACES) + rgb.rgb = inversePQ(rgb.rgb); + rgb.rgb *= (10000.0 / m_luminance) * (2.0 / m_toneP1); + rgb.rgb = aces(rgb.rgb); + rgb.rgb *= (1.24 / m_toneP1); + rgb.rgb = pow(rgb.rgb, vec3(0.27)); + +#elif defined(KODI_TONE_MAPPING_HABLE) + rgb.rgb = inversePQ(rgb.rgb); + rgb.rgb *= m_toneP1; + float wp = m_luminance / 100.0; + rgb.rgb = hable(rgb.rgb * wp) / hable(vec3(wp)); + rgb.rgb = pow(rgb.rgb, vec3(1.0 / 2.2)); +#endif + +#endif + + return rgb; +} diff --git a/system/shaders/GLES/2.0/gles_convolution-4x4.frag b/system/shaders/GLES/2.0/gles_convolution-4x4.frag new file mode 100644 index 0000000..3043b10 --- /dev/null +++ b/system/shaders/GLES/2.0/gles_convolution-4x4.frag @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +precision highp float; + +uniform sampler2D img; +uniform vec2 stepxy; +varying vec2 cord; +uniform float m_alpha; +uniform sampler2D kernelTex; + +vec4 weight(float pos) +{ +#if defined(HAS_FLOAT_TEXTURE) + return texture2D(kernelTex, vec2(pos, 0.5)); +#else + return texture2D(kernelTex, vec2(pos - 0.5)) * 2.0 - 1.0; +#endif +} + +vec3 pixel(float xpos, float ypos) +{ + return texture2D(img, vec2(xpos, ypos)).rgb; +} + +vec3 line (float ypos, vec4 xpos, vec4 linetaps) +{ + return pixel(xpos.r, ypos) * linetaps.r + + pixel(xpos.g, ypos) * linetaps.g + + pixel(xpos.b, ypos) * linetaps.b + + pixel(xpos.a, ypos) * linetaps.a; +} + +void main() +{ + vec4 rgb; + vec2 pos = cord + stepxy * 0.5; + vec2 f = fract(pos / stepxy); + + vec4 linetaps = weight(1.0 - f.x); + vec4 columntaps = weight(1.0 - f.y); + + // make sure all taps added together is exactly 1.0, otherwise some (very small) distortion can occur + linetaps /= linetaps.r + linetaps.g + linetaps.b + linetaps.a; + columntaps /= columntaps.r + columntaps.g + columntaps.b + columntaps.a; + + vec2 xystart = (-1.5 - f) * stepxy + pos; + vec4 xpos = vec4(xystart.x, xystart.x + stepxy.x, xystart.x + stepxy.x * 2.0, xystart.x + stepxy.x * 3.0); + + rgb.rgb = line(xystart.y, xpos, linetaps) * columntaps.r + + line(xystart.y + stepxy.y, xpos, linetaps) * columntaps.g + + line(xystart.y + stepxy.y * 2.0, xpos, linetaps) * columntaps.b + + line(xystart.y + stepxy.y * 3.0, xpos, linetaps) * columntaps.a; + + rgb.a = m_alpha; + + gl_FragColor = rgb; +} + diff --git a/system/shaders/GLES/2.0/gles_convolution-6x6.frag b/system/shaders/GLES/2.0/gles_convolution-6x6.frag new file mode 100644 index 0000000..d043c75 --- /dev/null +++ b/system/shaders/GLES/2.0/gles_convolution-6x6.frag @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +precision highp float; + +uniform sampler2D img; +uniform vec2 stepxy; +varying vec2 cord; +uniform float m_alpha; +uniform sampler2D kernelTex; + +vec3 weight(float pos) +{ +#if defined(HAS_FLOAT_TEXTURE) + return texture2D(kernelTex, vec2(pos, 0.5)).rgb; +#else + return texture2D(kernelTex, vec2(pos - 0.5)).rgb * 2.0 - 1.0; +#endif +} + +vec3 pixel(float xpos, float ypos) +{ + return texture2D(img, vec2(xpos, ypos)).rgb; +} + +vec3 line (float ypos, vec3 xpos1, vec3 xpos2, vec3 linetaps1, vec3 linetaps2) +{ + return pixel(xpos1.r, ypos) * linetaps1.r + + pixel(xpos1.g, ypos) * linetaps2.r + + pixel(xpos1.b, ypos) * linetaps1.g + + pixel(xpos2.r, ypos) * linetaps2.g + + pixel(xpos2.g, ypos) * linetaps1.b + + pixel(xpos2.b, ypos) * linetaps2.b; +} + +void main() +{ + vec4 rgb; + vec2 pos = cord + stepxy * 0.5; + vec2 f = fract(pos / stepxy); + + vec3 linetaps1 = weight((1.0 - f.x) / 2.0); + vec3 linetaps2 = weight((1.0 - f.x) / 2.0 + 0.5); + vec3 columntaps1 = weight((1.0 - f.y) / 2.0); + vec3 columntaps2 = weight((1.0 - f.y) / 2.0 + 0.5); + + // make sure all taps added together is exactly 1.0, otherwise some (very small) distortion can occur + float sum = linetaps1.r + linetaps1.g + linetaps1.b + linetaps2.r + linetaps2.g + linetaps2.b; + linetaps1 /= sum; + linetaps2 /= sum; + sum = columntaps1.r + columntaps1.g + columntaps1.b + columntaps2.r + columntaps2.g + columntaps2.b; + columntaps1 /= sum; + columntaps2 /= sum; + + vec2 xystart = (-2.5 - f) * stepxy + pos; + vec3 xpos1 = vec3(xystart.x, xystart.x + stepxy.x, xystart.x + stepxy.x * 2.0); + vec3 xpos2 = vec3(xystart.x + stepxy.x * 3.0, xystart.x + stepxy.x * 4.0, xystart.x + stepxy.x * 5.0); + + rgb.rgb = line(xystart.y, xpos1, xpos2, linetaps1, linetaps2) * columntaps1.r + + line(xystart.y + stepxy.y, xpos1, xpos2, linetaps1, linetaps2) * columntaps2.r + + line(xystart.y + stepxy.y * 2.0, xpos1, xpos2, linetaps1, linetaps2) * columntaps1.g + + line(xystart.y + stepxy.y * 3.0, xpos1, xpos2, linetaps1, linetaps2) * columntaps2.g + + line(xystart.y + stepxy.y * 4.0, xpos1, xpos2, linetaps1, linetaps2) * columntaps1.b + + line(xystart.y + stepxy.y * 5.0, xpos1, xpos2, linetaps1, linetaps2) * columntaps2.b; + + rgb.a = m_alpha; + + gl_FragColor = rgb; +} + diff --git a/system/shaders/GLES/2.0/gles_shader.vert b/system/shaders/GLES/2.0/gles_shader.vert new file mode 100644 index 0000000..890acbb --- /dev/null +++ b/system/shaders/GLES/2.0/gles_shader.vert @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +attribute vec4 m_attrpos; +attribute vec4 m_attrcol; +attribute vec4 m_attrcord0; +attribute vec4 m_attrcord1; +varying vec4 m_cord0; +varying vec4 m_cord1; +varying lowp vec4 m_colour; +uniform mat4 m_proj; +uniform mat4 m_model; +uniform mat4 m_coord0Matrix; + +void main () +{ + mat4 mvp = m_proj * m_model; + gl_Position = mvp * m_attrpos; + m_colour = m_attrcol; + m_cord0 = m_coord0Matrix * m_attrcord0; + m_cord1 = m_attrcord1; +} diff --git a/system/shaders/GLES/2.0/gles_shader_default.frag b/system/shaders/GLES/2.0/gles_shader_default.frag new file mode 100644 index 0000000..f213360 --- /dev/null +++ b/system/shaders/GLES/2.0/gles_shader_default.frag @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +precision mediump float; +uniform lowp vec4 m_unicol; + +void main () +{ + vec4 rgb; + + rgb = m_unicol; + +#if defined(KODI_LIMITED_RANGE) + rgb.rgb *= (235.0 - 16.0) / 255.0; + rgb.rgb += 16.0 / 255.0; +#endif + + gl_FragColor = rgb; +} diff --git a/system/shaders/GLES/2.0/gles_shader_fonts.frag b/system/shaders/GLES/2.0/gles_shader_fonts.frag new file mode 100644 index 0000000..075d26f --- /dev/null +++ b/system/shaders/GLES/2.0/gles_shader_fonts.frag @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +precision mediump float; +uniform sampler2D m_samp0; +varying vec4 m_cord0; +varying lowp vec4 m_colour; + +void main () +{ + vec4 rgb; + + rgb.rgb = m_colour.rgb; + rgb.a = m_colour.a * texture2D(m_samp0, m_cord0.xy).a; + +#if defined(KODI_LIMITED_RANGE) + rgb.rgb *= (235.0 - 16.0) / 255.0; + rgb.rgb += 16.0 / 255.0; +#endif + + gl_FragColor = rgb; +} diff --git a/system/shaders/GLES/2.0/gles_shader_multi.frag b/system/shaders/GLES/2.0/gles_shader_multi.frag new file mode 100644 index 0000000..9f28898 --- /dev/null +++ b/system/shaders/GLES/2.0/gles_shader_multi.frag @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +precision mediump float; +uniform sampler2D m_samp0; +uniform sampler2D m_samp1; +varying vec4 m_cord0; +varying vec4 m_cord1; + +void main () +{ + vec4 rgb; + + rgb = texture2D(m_samp0, m_cord0.xy) * texture2D(m_samp1, m_cord1.xy); + +#if defined(KODI_LIMITED_RANGE) + rgb.rgb *= (235.0 - 16.0) / 255.0; + rgb.rgb += 16.0 / 255.0; +#endif + + gl_FragColor = rgb; +} diff --git a/system/shaders/GLES/2.0/gles_shader_multi_blendcolor.frag b/system/shaders/GLES/2.0/gles_shader_multi_blendcolor.frag new file mode 100644 index 0000000..35153da --- /dev/null +++ b/system/shaders/GLES/2.0/gles_shader_multi_blendcolor.frag @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +precision mediump float; +uniform sampler2D m_samp0; +uniform sampler2D m_samp1; +varying vec4 m_cord0; +varying vec4 m_cord1; +uniform lowp vec4 m_unicol; + +void main () +{ + vec4 rgb; + + rgb = m_unicol * texture2D(m_samp0, m_cord0.xy) * texture2D(m_samp1, m_cord1.xy); + +#if defined(KODI_LIMITED_RANGE) + rgb.rgb *= (235.0 - 16.0) / 255.0; + rgb.rgb += 16.0 / 255.0; +#endif + + gl_FragColor = rgb; +} diff --git a/system/shaders/GLES/2.0/gles_shader_rgba.frag b/system/shaders/GLES/2.0/gles_shader_rgba.frag new file mode 100644 index 0000000..cdbb076 --- /dev/null +++ b/system/shaders/GLES/2.0/gles_shader_rgba.frag @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +precision mediump float; +uniform sampler2D m_samp0; +uniform sampler2D m_samp1; +varying vec4 m_cord0; +varying vec4 m_cord1; +varying lowp vec4 m_colour; +uniform int m_method; + +uniform float m_brightness; +uniform float m_contrast; + +void main () +{ + vec4 rgb; + + rgb = texture2D(m_samp0, m_cord0.xy); + rgb *= m_contrast; + rgb += m_brightness; + + gl_FragColor = rgb; +} diff --git a/system/shaders/GLES/2.0/gles_shader_rgba_blendcolor.frag b/system/shaders/GLES/2.0/gles_shader_rgba_blendcolor.frag new file mode 100644 index 0000000..3f08da0 --- /dev/null +++ b/system/shaders/GLES/2.0/gles_shader_rgba_blendcolor.frag @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +precision mediump float; +uniform sampler2D m_samp0; +uniform sampler2D m_samp1; +varying vec4 m_cord0; +varying vec4 m_cord1; +varying lowp vec4 m_colour; +uniform int m_method; + +void main () +{ + vec4 rgb; + + rgb = texture2D(m_samp0, m_cord0.xy).rgba * m_colour; + +#if defined(KODI_LIMITED_RANGE) + rgb.rgb *= (235.0 - 16.0) / 255.0; + rgb.rgb += 16.0 / 255.0; +#endif + + gl_FragColor = rgb; +} diff --git a/system/shaders/GLES/2.0/gles_shader_rgba_bob.frag b/system/shaders/GLES/2.0/gles_shader_rgba_bob.frag new file mode 100644 index 0000000..fd4a83b --- /dev/null +++ b/system/shaders/GLES/2.0/gles_shader_rgba_bob.frag @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +precision highp float; +uniform sampler2D m_samp0; +uniform sampler2D m_samp1; +varying vec4 m_cord0; +varying vec4 m_cord1; +varying lowp vec4 m_colour; +uniform int m_method; +uniform int m_field; +uniform float m_step; + +uniform float m_brightness; +uniform float m_contrast; + +void main () +{ + vec2 source; + source = m_cord0.xy; + + float temp1 = mod(source.y, 2.0 * m_step); + float temp2 = source.y - temp1; + source.y = temp2 + m_step / 2.0 - float(m_field) * m_step; + + // Blend missing line + vec2 below; + float bstep = step(m_step, temp1); + below.x = source.x; + below.y = source.y + (2.0 * m_step * bstep); + + vec4 color = mix(texture2D(m_samp0, source), texture2D(m_samp0, below), 0.5); + color *= m_contrast; + color += m_brightness; + + gl_FragColor = color; +} diff --git a/system/shaders/GLES/2.0/gles_shader_rgba_bob_oes.frag b/system/shaders/GLES/2.0/gles_shader_rgba_bob_oes.frag new file mode 100644 index 0000000..16894af --- /dev/null +++ b/system/shaders/GLES/2.0/gles_shader_rgba_bob_oes.frag @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +#extension GL_OES_EGL_image_external : require + +precision highp float; +uniform samplerExternalOES m_samp0; +uniform samplerExternalOES m_samp1; +varying vec4 m_cord0; +varying vec4 m_cord1; +varying lowp vec4 m_colour; +uniform int m_method; +uniform int m_field; +uniform float m_step; + +uniform float m_brightness; +uniform float m_contrast; + +void main () +{ + vec2 source; + source = m_cord0.xy; + + float temp1 = mod(source.y, 2.0 * m_step); + float temp2 = source.y - temp1; + source.y = temp2 + m_step / 2.0 - float(m_field) * m_step; + + // Blend missing line + vec2 below; + float bstep = step(m_step, temp1); + below.x = source.x; + below.y = source.y + (2.0*m_step * bstep); + + vec4 color = mix(texture2D(m_samp0, source), texture2D(m_samp0, below), 0.5); + color *= m_contrast; + color += m_brightness; + + gl_FragColor = color; +} diff --git a/system/shaders/GLES/2.0/gles_shader_rgba_oes.frag b/system/shaders/GLES/2.0/gles_shader_rgba_oes.frag new file mode 100644 index 0000000..2936954 --- /dev/null +++ b/system/shaders/GLES/2.0/gles_shader_rgba_oes.frag @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +#extension GL_OES_EGL_image_external : require + +precision mediump float; +uniform samplerExternalOES m_samp0; +varying vec4 m_cord0; + +uniform float m_brightness; +uniform float m_contrast; + +void main () +{ + vec4 rgb; + + rgb = texture2D(m_samp0, m_cord0.xy); + rgb *= m_contrast; + rgb += m_brightness; + + gl_FragColor = rgb; +} diff --git a/system/shaders/GLES/2.0/gles_shader_texture.frag b/system/shaders/GLES/2.0/gles_shader_texture.frag new file mode 100644 index 0000000..a2ac2de --- /dev/null +++ b/system/shaders/GLES/2.0/gles_shader_texture.frag @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +precision mediump float; +uniform sampler2D m_samp0; +uniform lowp vec4 m_unicol; +varying vec4 m_cord0; + +void main () +{ + vec4 rgb; + + rgb = texture2D(m_samp0, m_cord0.xy).rgba * m_unicol; + +#if defined(KODI_LIMITED_RANGE) + rgb.rgb *= (235.0 - 16.0) / 255.0; + rgb.rgb += 16.0 / 255.0; +#endif + + gl_FragColor = rgb; +} diff --git a/system/shaders/GLES/2.0/gles_shader_texture_noalpha.frag b/system/shaders/GLES/2.0/gles_shader_texture_noalpha.frag new file mode 100644 index 0000000..9f478ed --- /dev/null +++ b/system/shaders/GLES/2.0/gles_shader_texture_noalpha.frag @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2019 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#version 100 + +precision mediump float; +uniform sampler2D m_samp0; +varying vec4 m_cord0; + +void main () +{ + vec3 rgb = texture2D(m_samp0, m_cord0.xy).rgb; + +#if defined(KODI_LIMITED_RANGE) + rgb *= (235.0 - 16.0) / 255.0; + rgb += 16.0 / 255.0; +#endif + + gl_FragColor = vec4(rgb, 1.0); +} diff --git a/system/shaders/GLES/2.0/gles_shader_texture_noblend.frag b/system/shaders/GLES/2.0/gles_shader_texture_noblend.frag new file mode 100644 index 0000000..8cc66c9 --- /dev/null +++ b/system/shaders/GLES/2.0/gles_shader_texture_noblend.frag @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +precision mediump float; +uniform sampler2D m_samp0; +varying vec4 m_cord0; + +void main () +{ + vec4 rgb; + + rgb = texture2D(m_samp0, m_cord0.xy); + +#if defined(KODI_LIMITED_RANGE) + rgb.rgb *= (235.0 - 16.0) / 255.0; + rgb.rgb += 16.0 / 255.0; +#endif + + gl_FragColor = rgb; +} diff --git a/system/shaders/GLES/2.0/gles_tonemap.frag b/system/shaders/GLES/2.0/gles_tonemap.frag new file mode 100644 index 0000000..28b2402 --- /dev/null +++ b/system/shaders/GLES/2.0/gles_tonemap.frag @@ -0,0 +1,50 @@ +#if (defined(KODI_TONE_MAPPING_ACES) || defined(KODI_TONE_MAPPING_HABLE)) +const float ST2084_m1 = 2610.0 / (4096.0 * 4.0); +const float ST2084_m2 = (2523.0 / 4096.0) * 128.0; +const float ST2084_c1 = 3424.0 / 4096.0; +const float ST2084_c2 = (2413.0 / 4096.0) * 32.0; +const float ST2084_c3 = (2392.0 / 4096.0) * 32.0; +#endif + +#if defined(KODI_TONE_MAPPING_REINHARD) +float reinhard(float x) +{ + return x * (1.0 + x / (m_toneP1 * m_toneP1)) / (1.0 + x); +} +#endif + +#if defined(KODI_TONE_MAPPING_ACES) +vec3 aces(vec3 x) +{ + float A = 2.51; + float B = 0.03; + float C = 2.43; + float D = 0.59; + float E = 0.14; + return (x * (A * x + B)) / (x * (C * x + D) + E); +} +#endif + +#if defined(KODI_TONE_MAPPING_HABLE) +vec3 hable(vec3 x) +{ + float A = 0.15; + float B = 0.5; + float C = 0.1; + float D = 0.2; + float E = 0.02; + float F = 0.3; + return ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F; +} +#endif + +#if (defined(KODI_TONE_MAPPING_ACES) || defined(KODI_TONE_MAPPING_HABLE)) +vec3 inversePQ(vec3 x) +{ + x = pow(max(x, 0.0), vec3(1.0 / ST2084_m2)); + x = max(x - ST2084_c1, 0.0) / (ST2084_c2 - ST2084_c3 * x); + x = pow(x, vec3(1.0 / ST2084_m1)); + return x; +} +#endif + diff --git a/system/shaders/GLES/2.0/gles_videofilter.frag b/system/shaders/GLES/2.0/gles_videofilter.frag new file mode 100644 index 0000000..d4c15ee --- /dev/null +++ b/system/shaders/GLES/2.0/gles_videofilter.frag @@ -0,0 +1,11 @@ +#version 100 + +precision mediump float; + +uniform sampler2D img; +varying vec2 cord; + +void main() +{ + gl_FragColor = texture2D(img, cord); +}
\ No newline at end of file diff --git a/system/shaders/GLES/2.0/gles_videofilter.vert b/system/shaders/GLES/2.0/gles_videofilter.vert new file mode 100644 index 0000000..2d5a0f9 --- /dev/null +++ b/system/shaders/GLES/2.0/gles_videofilter.vert @@ -0,0 +1,14 @@ +#version 100 + +attribute vec4 m_attrpos; +attribute vec2 m_attrcord; +varying vec2 cord; +uniform mat4 m_proj; +uniform mat4 m_model; + +void main () +{ + mat4 mvp = m_proj * m_model; + gl_Position = mvp * m_attrpos; + cord = m_attrcord.xy; +} diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb.vert b/system/shaders/GLES/2.0/gles_yuv2rgb.vert new file mode 100644 index 0000000..bc437af --- /dev/null +++ b/system/shaders/GLES/2.0/gles_yuv2rgb.vert @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +attribute vec4 m_attrpos; +attribute vec2 m_attrcordY; +attribute vec2 m_attrcordU; +attribute vec2 m_attrcordV; +varying vec2 m_cordY; +varying vec2 m_cordU; +varying vec2 m_cordV; +uniform mat4 m_proj; +uniform mat4 m_model; + +void main () +{ + mat4 mvp = m_proj * m_model; + gl_Position = mvp * m_attrpos; + m_cordY = m_attrcordY; + m_cordU = m_attrcordU; + m_cordV = m_attrcordV; +} diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag new file mode 100644 index 0000000..d76a3b8 --- /dev/null +++ b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +precision mediump float; + +uniform sampler2D m_sampY; +uniform sampler2D m_sampU; +uniform sampler2D m_sampV; +varying vec2 m_cordY; +varying vec2 m_cordU; +varying vec2 m_cordV; +uniform vec2 m_step; +uniform mat4 m_yuvmat; +uniform mat3 m_primMat; +uniform float m_gammaDstInv; +uniform float m_gammaSrc; +uniform float m_toneP1; +uniform float m_luminance; +uniform vec3 m_coefsDst; +uniform float m_alpha; + +void main() +{ + vec4 rgb; + vec4 yuv; + +#if defined(XBMC_YV12) || defined(XBMC_NV12) + + yuv = vec4(texture2D(m_sampY, m_cordY).r, + texture2D(m_sampU, m_cordU).g, + texture2D(m_sampV, m_cordV).a, + 1.0); + +#elif defined(XBMC_NV12_RRG) + + yuv = vec4(texture2D(m_sampY, m_cordY).r, + texture2D(m_sampU, m_cordU).r, + texture2D(m_sampV, m_cordV).g, + 1.0); + +#endif + + rgb = m_yuvmat * yuv; + rgb.a = m_alpha; + +#if defined(XBMC_COL_CONVERSION) + rgb.rgb = pow(max(vec3(0), rgb.rgb), vec3(m_gammaSrc)); + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); + rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); + +#if defined(KODI_TONE_MAPPING_REINHARD) + float luma = dot(rgb.rgb, m_coefsDst); + rgb.rgb *= reinhard(luma) / luma; + +#elif defined(KODI_TONE_MAPPING_ACES) + rgb.rgb = inversePQ(rgb.rgb); + rgb.rgb *= (10000.0 / m_luminance) * (2.0 / m_toneP1); + rgb.rgb = aces(rgb.rgb); + rgb.rgb *= (1.24 / m_toneP1); + rgb.rgb = pow(rgb.rgb, vec3(0.27)); + +#elif defined(KODI_TONE_MAPPING_HABLE) + rgb.rgb = inversePQ(rgb.rgb); + rgb.rgb *= m_toneP1; + float wp = m_luminance / 100.0; + rgb.rgb = hable(rgb.rgb * wp) / hable(vec3(wp)); + rgb.rgb = pow(rgb.rgb, vec3(1.0 / 2.2)); +#endif + +#endif + + gl_FragColor = rgb; +} + diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag new file mode 100644 index 0000000..a82de9d --- /dev/null +++ b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2010-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#version 100 + +precision highp float; +uniform sampler2D m_sampY; +uniform sampler2D m_sampU; +uniform sampler2D m_sampV; +varying vec2 m_cordY; +varying vec2 m_cordU; +varying vec2 m_cordV; +uniform float m_alpha; +uniform mat4 m_yuvmat; +uniform float m_stepX; +uniform float m_stepY; +uniform int m_field; +uniform mat3 m_primMat; +uniform float m_gammaDstInv; +uniform float m_gammaSrc; +uniform float m_toneP1; +uniform float m_luminance; +uniform vec3 m_coefsDst; + +void main() +{ + vec4 rgb; + + vec2 offsetY; + vec2 offsetU; + vec2 offsetV; + float temp1 = mod(m_cordY.y, 2.0 * m_stepY); + + offsetY = m_cordY; + offsetU = m_cordU; + offsetV = m_cordV; + + offsetY.y -= (temp1 - m_stepY / 2.0 + float(m_field) * m_stepY); + offsetU.y -= (temp1 - m_stepY / 2.0 + float(m_field) * m_stepY) / 2.0; + offsetV.y -= (temp1 - m_stepY / 2.0 + float(m_field) * m_stepY) / 2.0; + + float bstep = step(m_stepY, temp1); + + // Blend missing line + vec2 belowY, belowU, belowV; + + belowY.x = offsetY.x; + belowY.y = offsetY.y + (2.0 * m_stepY * bstep); + belowU.x = offsetU.x; + belowU.y = offsetU.y + (m_stepY * bstep); + belowV.x = offsetV.x; + belowV.y = offsetV.y + (m_stepY * bstep); + + vec4 rgbAbove; + vec4 rgbBelow; + vec4 yuvAbove; + vec4 yuvBelow; + + yuvAbove = vec4(texture2D(m_sampY, offsetY).r, texture2D(m_sampU, offsetU).g, texture2D(m_sampV, offsetV).a, 1.0); + rgbAbove = m_yuvmat * yuvAbove; + rgbAbove.a = m_alpha; + + yuvBelow = vec4(texture2D(m_sampY, belowY).r, texture2D(m_sampU, belowU).g, texture2D(m_sampV, belowV).a, 1.0); + rgbBelow = m_yuvmat * yuvBelow; + rgbBelow.a = m_alpha; + + rgb = mix(rgb, rgbBelow, 0.5); + +#if defined(XBMC_COL_CONVERSION) + rgb.rgb = pow(max(vec3(0), rgb.rgb), vec3(m_gammaSrc)); + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); + rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); + +#if defined(KODI_TONE_MAPPING_REINHARD) + float luma = dot(rgb.rgb, m_coefsDst); + rgb.rgb *= reinhard(luma) / luma; + +#elif defined(KODI_TONE_MAPPING_ACES) + rgb.rgb = inversePQ(rgb.rgb); + rgb.rgb *= (10000.0 / m_luminance) * (2.0 / m_toneP1); + rgb.rgb = aces(rgb.rgb); + rgb.rgb *= (1.24 / m_toneP1); + rgb.rgb = pow(rgb.rgb, vec3(0.27)); + +#elif defined(KODI_TONE_MAPPING_HABLE) + rgb.rgb = inversePQ(rgb.rgb); + rgb.rgb *= m_toneP1; + float wp = m_luminance / 100.0; + rgb.rgb = hable(rgb.rgb * wp) / hable(vec3(wp)); + rgb.rgb = pow(rgb.rgb, vec3(1.0 / 2.2)); +#endif + +#endif + + gl_FragColor = rgb; +} diff --git a/system/shaders/convolution-4x4_d3d.fx b/system/shaders/convolution-4x4_d3d.fx new file mode 100644 index 0000000..cf9408b --- /dev/null +++ b/system/shaders/convolution-4x4_d3d.fx @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2005-2015 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#include "convolution_d3d.fx" +#include "output_d3d.fx" + +SamplerState RGBSampler : IMMUTABLE +{ + AddressU = CLAMP; + AddressV = CLAMP; + Filter = MIN_MAG_MIP_POINT; +}; + +inline half4 weight(float pos) +{ +#ifdef HAS_RGBA + half4 w = g_KernelTexture.Sample(KernelSampler, pos); +#else + half4 w = g_KernelTexture.Sample(KernelSampler, pos).bgra; +#endif + +#ifndef HAS_FLOAT_TEXTURE + w = w * 2.0 - 1.0; +#endif + return w; +} + +inline half3 pixel(float xpos, float ypos) +{ + return g_Texture.Sample(RGBSampler, float2(xpos, ypos)).rgb; +} + +inline half3 getLine(float ypos, float4 xpos, half4 linetaps) +{ + return + pixel(xpos.r, ypos) * linetaps.r + + pixel(xpos.g, ypos) * linetaps.g + + pixel(xpos.b, ypos) * linetaps.b + + pixel(xpos.a, ypos) * linetaps.a; +} + +float4 CONVOLUTION4x4(float2 TextureUV : TEXCOORD0) : SV_TARGET +{ + float2 f = frac(TextureUV / g_StepXY + float2(0.5, 0.5)); + + half4 linetaps = weight(1.0 - f.x); + half4 columntaps = weight(1.0 - f.y); + + // kernel generation code made sure taps add up to 1, no need to adjust here. + + float2 xystart = (-1.0 - f) * g_StepXY + TextureUV; + float4 xpos = xystart.x + g_StepXY.x * float4(0.0, 1.0, 2.0, 3.0); + float4 ypos = xystart.y + g_StepXY.y * float4(0.0, 1.0, 2.0, 3.0); + + float3 rgb = + getLine(ypos.x, xpos, linetaps) * columntaps.r + + getLine(ypos.y, xpos, linetaps) * columntaps.g + + getLine(ypos.z, xpos, linetaps) * columntaps.b + + getLine(ypos.w, xpos, linetaps) * columntaps.a; + + return output(g_colorRange.x + g_colorRange.y * saturate(rgb), TextureUV); +} + +technique11 SCALER_T +{ + pass P0 + { + SetVertexShader( VS_SHADER ); + SetPixelShader( CompileShader( ps_4_0_level_9_3, CONVOLUTION4x4() ) ); + } +}; diff --git a/system/shaders/convolution-6x6_d3d.fx b/system/shaders/convolution-6x6_d3d.fx new file mode 100644 index 0000000..253c225 --- /dev/null +++ b/system/shaders/convolution-6x6_d3d.fx @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2005-2015 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#include "convolution_d3d.fx" +#include "output_d3d.fx" + +SamplerState RGBSampler : IMMUTABLE +{ + AddressU = CLAMP; + AddressV = CLAMP; + Filter = MIN_MAG_MIP_POINT; +}; + +half3 weight(float pos) +{ +#ifdef HAS_RGBA + half3 w = g_KernelTexture.Sample(KernelSampler, pos).rgb; +#else + half3 w = g_KernelTexture.Sample(KernelSampler, pos).bgr; +#endif + +#ifndef HAS_FLOAT_TEXTURE + w = w * 2.0 - 1.0; +#endif + return w; +} + +inline half3 pixel(float xpos, float ypos) +{ + return g_Texture.Sample(RGBSampler, float2(xpos, ypos)).rgb; +} + +inline half3 getLine(float ypos, float3 xpos1, float3 xpos2, half3 linetaps1, half3 linetaps2) +{ + return + pixel(xpos1.r, ypos) * linetaps1.r + + pixel(xpos1.g, ypos) * linetaps2.r + + pixel(xpos1.b, ypos) * linetaps1.g + + pixel(xpos2.r, ypos) * linetaps2.g + + pixel(xpos2.g, ypos) * linetaps1.b + + pixel(xpos2.b, ypos) * linetaps2.b; +} + +float4 CONVOLUTION6x6(in float2 TextureUV : TEXCOORD0) : SV_TARGET +{ + float2 f = frac(TextureUV / g_StepXY + 0.5); + + half3 linetaps1 = weight((1.0 - f.x) / 2.0); + half3 linetaps2 = weight((1.0 - f.x) / 2.0 + 0.5); + half3 columntaps1 = weight((1.0 - f.y) / 2.0); + half3 columntaps2 = weight((1.0 - f.y) / 2.0 + 0.5); + + // kernel generation code made sure taps add up to 1, no need to adjust here. + + float2 xystart = (-2.0 - f) * g_StepXY + TextureUV; + float3 xpos1 = xystart.x + g_StepXY.x * float3(0.0, 1.0, 2.0); + float3 xpos2 = xystart.x + g_StepXY.x * float3(3.0, 4.0, 5.0); + float3 ypos1 = xystart.y + g_StepXY.y * float3(0.0, 1.0, 2.0); + float3 ypos2 = xystart.y + g_StepXY.y * float3(3.0, 4.0, 5.0); + + float3 rgb = + getLine(ypos1.x, xpos1, xpos2, linetaps1, linetaps2) * columntaps1.r + + getLine(ypos1.y, xpos1, xpos2, linetaps1, linetaps2) * columntaps2.r + + getLine(ypos1.z, xpos1, xpos2, linetaps1, linetaps2) * columntaps1.g + + getLine(ypos2.x, xpos1, xpos2, linetaps1, linetaps2) * columntaps2.g + + getLine(ypos2.y, xpos1, xpos2, linetaps1, linetaps2) * columntaps1.b + + getLine(ypos2.z, xpos1, xpos2, linetaps1, linetaps2) * columntaps2.b; + + return output(g_colorRange.x + g_colorRange.y * saturate(rgb), TextureUV); +} + +technique11 SCALER_T +{ + pass P0 + { + SetVertexShader( VS_SHADER ); + SetPixelShader( CompileShader( ps_4_0_level_9_3, CONVOLUTION6x6() ) ); + } +}; diff --git a/system/shaders/convolution_d3d.fx b/system/shaders/convolution_d3d.fx new file mode 100644 index 0000000..6ff6150 --- /dev/null +++ b/system/shaders/convolution_d3d.fx @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2005-2015 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +texture2D g_Texture; +texture2D g_KernelTexture; +float4 g_StepXY; +float2 g_viewPort; +float2 g_colorRange; + +SamplerState KernelSampler : IMMUTABLE +{ + AddressU = CLAMP; + AddressV = CLAMP; + Filter = MIN_MAG_MIP_LINEAR; +}; + +struct VS_INPUT +{ + float4 Position : POSITION; + float2 TextureUV : TEXCOORD0; +}; + +struct VS_OUTPUT +{ + float2 TextureUV : TEXCOORD0; + float4 Position : SV_POSITION; +}; + +// +// VS for rendering in screen space +// +VS_OUTPUT VS(VS_INPUT In) +{ + VS_OUTPUT output = (VS_OUTPUT)0; + output.Position.x = (In.Position.x / (g_viewPort.x / 2.0)) - 1; + output.Position.y = -(In.Position.y / (g_viewPort.y / 2.0)) + 1; + output.Position.z = output.Position.z; + output.Position.w = 1.0; + output.TextureUV = In.TextureUV; + + return output; +} + +#define VS_SHADER CompileShader( vs_4_0_level_9_1, VS() ) diff --git a/system/shaders/convolutionsep-4x4_d3d.fx b/system/shaders/convolutionsep-4x4_d3d.fx new file mode 100644 index 0000000..af68b3b --- /dev/null +++ b/system/shaders/convolutionsep-4x4_d3d.fx @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2005-2015 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#include "convolution_d3d.fx" +#include "output_d3d.fx" + +SamplerState RGBSampler : IMMUTABLE +{ + AddressU = CLAMP; + AddressV = CLAMP; + Filter = MIN_MAG_POINT_MIP_LINEAR; +}; + +inline half4 weight(float pos) +{ +#ifdef HAS_RGBA + half4 w = g_KernelTexture.Sample(KernelSampler, pos); +#else + half4 w = g_KernelTexture.Sample(KernelSampler, pos).bgra; +#endif + +#ifndef HAS_FLOAT_TEXTURE + w = w * 2.0 - 1.0; +#endif + return w; +} + +inline half3 pixel(float xpos, float ypos) +{ + return g_Texture.Sample(RGBSampler, float2(xpos, ypos)).rgb; +} + +// Code for first pass - horizontal + +inline half3 getLine(float ypos, float4 xpos, half4 linetaps) +{ + return + pixel(xpos.r, ypos) * linetaps.r + + pixel(xpos.g, ypos) * linetaps.g + + pixel(xpos.b, ypos) * linetaps.b + + pixel(xpos.a, ypos) * linetaps.a; +} + +float4 CONVOLUTION4x4Horiz(in float2 TextureUV : TEXCOORD0) : SV_TARGET +{ + float2 f = frac(TextureUV / g_StepXY.xy + 0.5); + half4 linetaps = weight(1.0 - f.x); + + // kernel generation code made sure taps add up to 1, no need to adjust here. + float xystart = (-1.0 - f.x) * g_StepXY.x + TextureUV.x; + + float4 xpos = xystart + g_StepXY.x * float4(0.0, 1.0, 2.0, 3.0); + return float4(getLine(TextureUV.y, xpos, linetaps), 1.0f); +} + +// Code for second pass - vertical + +inline half3 getRow(float xpos, float4 ypos, half4 columntaps) +{ + return + pixel(xpos, ypos.r) * columntaps.r + + pixel(xpos, ypos.g) * columntaps.g + + pixel(xpos, ypos.b) * columntaps.b + + pixel(xpos, ypos.a) * columntaps.a; +} + +float4 CONVOLUTION4x4Vert(in float2 TextureUV : TEXCOORD0) : SV_TARGET +{ + float2 f = frac(TextureUV / g_StepXY.zw + 0.5); + half4 columntaps = weight(1.0 - f.y); + + // kernel generation code made sure taps add up to 1, no need to adjust here. + float xystart = (-1.0 - f.y) * g_StepXY.w + TextureUV.y; + + float4 ypos = xystart + g_StepXY.w * float4(0.0, 1.0, 2.0, 3.0); + return output(g_colorRange.x + g_colorRange.y * saturate(getRow(TextureUV.x, ypos, columntaps)), TextureUV); +} + +technique11 SCALER_T +{ + pass P0 + { + SetVertexShader( VS_SHADER ); + SetPixelShader( CompileShader( ps_4_0_level_9_3, CONVOLUTION4x4Horiz() ) ); + } + pass P1 + { + SetVertexShader( VS_SHADER ); + SetPixelShader( CompileShader( ps_4_0_level_9_3, CONVOLUTION4x4Vert() ) ); + } + +}; diff --git a/system/shaders/convolutionsep-6x6_d3d.fx b/system/shaders/convolutionsep-6x6_d3d.fx new file mode 100644 index 0000000..9db0d6b --- /dev/null +++ b/system/shaders/convolutionsep-6x6_d3d.fx @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2005-2015 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#include "convolution_d3d.fx" +#include "output_d3d.fx" + +SamplerState RGBSampler : IMMUTABLE +{ + AddressU = CLAMP; + AddressV = CLAMP; + Filter = MIN_MAG_POINT_MIP_LINEAR; +}; + +inline half3 weight(float pos) +{ +#ifdef HAS_RGBA + half3 w = g_KernelTexture.Sample(KernelSampler, pos).rgb; +#else + half3 w = g_KernelTexture.Sample(KernelSampler, pos).bgr; +#endif + +#ifndef HAS_FLOAT_TEXTURE + w = w * 2.0 - 1.0; +#endif + return w; +} + +inline half3 pixel(float xpos, float ypos) +{ + return g_Texture.Sample(RGBSampler, float2(xpos, ypos)).rgb; +} + +half3 getLine(float ypos, float3 xpos1, float3 xpos2, half3 linetaps1, half3 linetaps2) +{ + return + pixel(xpos1.r, ypos) * linetaps1.r + + pixel(xpos1.g, ypos) * linetaps2.r + + pixel(xpos1.b, ypos) * linetaps1.g + + pixel(xpos2.r, ypos) * linetaps2.g + + pixel(xpos2.g, ypos) * linetaps1.b + + pixel(xpos2.b, ypos) * linetaps2.b; +} + +// Code for first pass - horizontal +float4 CONVOLUTION6x6Horiz(in float2 TextureUV : TEXCOORD0) : SV_TARGET +{ + float2 f = frac(TextureUV / g_StepXY.xy + 0.5); + + half3 linetaps1 = weight((1.0 - f.x) / 2.0); + half3 linetaps2 = weight((1.0 - f.x) / 2.0 + 0.5); + + // kernel generation code made sure taps add up to 1, no need to adjust here. + + float xstart = (-2.0 - f.x) * g_StepXY.x + TextureUV.x; + + float3 xpos1 = xstart + g_StepXY.x * float3(0.0, 1.0, 2.0); + float3 xpos2 = xstart + g_StepXY.x * float3(3.0, 4.0, 5.0); + + return float4(getLine(TextureUV.y, xpos1, xpos2, linetaps1, linetaps2), 1.0); +} + +// Code for second pass - vertical + +half3 getRow(float xpos, float3 ypos1, float3 ypos2, half3 columntaps1, half3 columntaps2) +{ + return + pixel(xpos, ypos1.r) * columntaps1.r + + pixel(xpos, ypos1.g) * columntaps2.r + + pixel(xpos, ypos1.b) * columntaps1.g + + pixel(xpos, ypos2.r) * columntaps2.g + + pixel(xpos, ypos2.g) * columntaps1.b + + pixel(xpos, ypos2.b) * columntaps2.b; +} + +float4 CONVOLUTION6x6Vert(in float2 TextureUV : TEXCOORD0) : SV_TARGET +{ + float2 f = frac(TextureUV / g_StepXY.zw + 0.5); + + half3 columntaps1 = weight((1.0 - f.y) / 2.0); + half3 columntaps2 = weight((1.0 - f.y) / 2.0 + 0.5); + + // kernel generation code made sure taps add up to 1, no need to adjust here. + + float ystart = (-2.0 - f.y) * g_StepXY.w + TextureUV.y; + + float3 ypos1 = ystart + g_StepXY.w * float3(0.0, 1.0, 2.0); + float3 ypos2 = ystart + g_StepXY.w * float3(3.0, 4.0, 5.0); + + return output(g_colorRange.x + g_colorRange.y * saturate(getRow(TextureUV.x, ypos1, ypos2, columntaps1, columntaps2)), TextureUV); +} + +technique11 SCALER_T +{ + pass P0 + { + SetVertexShader( VS_SHADER ); + SetPixelShader( CompileShader( ps_4_0_level_9_3, CONVOLUTION6x6Horiz() ) ); + } + pass P1 + { + SetVertexShader( VS_SHADER ); + SetPixelShader( CompileShader( ps_4_0_level_9_3, CONVOLUTION6x6Vert() ) ); + } +}; diff --git a/system/shaders/guishader_checkerboard_left.hlsl b/system/shaders/guishader_checkerboard_left.hlsl new file mode 100644 index 0000000..7639a8c --- /dev/null +++ b/system/shaders/guishader_checkerboard_left.hlsl @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2005-2015 Team Kodi + * http://kodi.tv + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#define STEREO_MODE_SHADER + +Texture2D texView : register(t0); + +cbuffer cbViewPort : register(b1) +{ + float g_viewPortX; + float g_viewPortY; + float g_viewPortWidth; + float g_viewPortHeigh; +}; + +#include "guishader_common.hlsl" + +float4 PS(PS_INPUT input) : SV_TARGET +{ + return StereoCheckerboard(input, STEREO_LEFT_EYE_INDEX); +} + + diff --git a/system/shaders/guishader_checkerboard_right.hlsl b/system/shaders/guishader_checkerboard_right.hlsl new file mode 100644 index 0000000..eb02a21 --- /dev/null +++ b/system/shaders/guishader_checkerboard_right.hlsl @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2005-2015 Team Kodi + * http://kodi.tv + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#define STEREO_MODE_SHADER + +Texture2D texView : register(t0); + +cbuffer cbViewPort : register(b1) +{ + float g_viewPortX; + float g_viewPortY; + float g_viewPortWidth; + float g_viewPortHeigh; +}; + +#include "guishader_common.hlsl" + +float4 PS(PS_INPUT input) : SV_TARGET +{ + return StereoCheckerboard(input, STEREO_RIGHT_EYE_INDEX); +} + + diff --git a/system/shaders/guishader_common.hlsl b/system/shaders/guishader_common.hlsl new file mode 100644 index 0000000..0dd01c5 --- /dev/null +++ b/system/shaders/guishader_common.hlsl @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2005-2015 Team Kodi + * http://kodi.tv + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +struct VS_INPUT +{ + float4 pos : POSITION; + float4 color: COLOR0; + float2 tex : TEXCOORD0; + float2 tex2 : TEXCOORD1; +}; + +struct PS_INPUT +{ + float4 pos : SV_POSITION; + float4 color: COLOR0; + float2 tex : TEXCOORD0; + float2 tex2 : TEXCOORD1; +}; + +SamplerState LinearSampler : register(s0) +{ + Filter = MIN_MAG_MIP_LINEAR; + AddressU = CLAMP; + AddressV = CLAMP; + Comparison = NEVER; +}; + +cbuffer cbWorld : register(b0) +{ + float4x4 worldViewProj; + float blackLevel; + float colorRange; + float sdrPeakLum; + int PQ; +}; + +inline float3 transferPQ(float3 x) +{ + static const float ST2084_m1 = 2610.0f / (4096.0f * 4.0f); + static const float ST2084_m2 = (2523.0f / 4096.0f) * 128.0f; + static const float ST2084_c1 = 3424.0f / 4096.0f; + static const float ST2084_c2 = (2413.0f / 4096.0f) * 32.0f; + static const float ST2084_c3 = (2392.0f / 4096.0f) * 32.0f; + static const float3x3 matx = + { + 0.627402, 0.329292, 0.043306, + 0.069095, 0.919544, 0.011360, + 0.016394, 0.088028, 0.895578 + }; + // REC.709 to linear + x = pow(x, 1.0f / 0.45f); + // REC.709 to BT.2020 + x = mul(matx, x); + // linear to PQ + x = pow(x / sdrPeakLum, ST2084_m1); + x = (ST2084_c1 + ST2084_c2 * x) / (1.0f + ST2084_c3 * x); + x = pow(x, ST2084_m2); + return x; +} + +inline float4 tonemapHDR(float4 color) +{ + return (PQ) ? float4(transferPQ(color.rgb), color.a) : color; +} + +inline float4 adjustColorRange(float4 color) +{ + return float4(blackLevel + colorRange * color.rgb, color.a); +} + +#define STEREO_LEFT_EYE_INDEX 0 +#define STEREO_RIGHT_EYE_INDEX 1 + +#ifdef STEREO_MODE_SHADER + +inline float4 StereoInterlaced(PS_INPUT input, int eye) +{ + uint pixelY = abs(trunc(input.tex.y * g_viewPortHeigh)); + uint odd = pixelY % 2; + + if ((odd == 0 && !eye) || (odd != 0 && eye)) + return float4(texView.Sample(LinearSampler, input.tex).rgb, 1.0); + else + return float4(0.0, 0.0, 0.0, 0.0); +} + +inline float4 StereoCheckerboard(PS_INPUT input, int eye) +{ + uint pixelX = abs(trunc(input.tex.x * g_viewPortWidth)); + uint pixelY = abs(trunc(input.tex.y * g_viewPortHeigh)); + uint odd = (pixelX + pixelY) % 2; + + if ((odd == 0 && !eye) || (odd != 0 && eye)) + return float4(texView.Sample(LinearSampler, input.tex).rgb, 1.0); + else + return float4(0.0, 0.0, 0.0, 0.0); +} + +#endif
\ No newline at end of file diff --git a/system/shaders/guishader_default.hlsl b/system/shaders/guishader_default.hlsl new file mode 100644 index 0000000..82b6510 --- /dev/null +++ b/system/shaders/guishader_default.hlsl @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2005-2015 Team Kodi + * http://kodi.tv + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#include "guishader_common.hlsl" + +float4 PS(PS_INPUT input) : SV_TARGET +{ + return tonemapHDR(adjustColorRange(input.color)); +} + + diff --git a/system/shaders/guishader_fonts.hlsl b/system/shaders/guishader_fonts.hlsl new file mode 100644 index 0000000..59c2ffe --- /dev/null +++ b/system/shaders/guishader_fonts.hlsl @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2005-2015 Team Kodi + * http://kodi.tv + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#include "guishader_common.hlsl" + +Texture2D texFont : register(t0); + +float4 PS(PS_INPUT input) : SV_TARGET +{ + input.color.a *= texFont.Sample(LinearSampler, input.tex).r; + return tonemapHDR(adjustColorRange(input.color)); +} + + diff --git a/system/shaders/guishader_interlaced_left.hlsl b/system/shaders/guishader_interlaced_left.hlsl new file mode 100644 index 0000000..41a7b92 --- /dev/null +++ b/system/shaders/guishader_interlaced_left.hlsl @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2005-2015 Team Kodi + * http://kodi.tv + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#define STEREO_MODE_SHADER + +Texture2D texView : register(t0); + +cbuffer cbViewPort : register(b1) +{ + float g_viewPortX; + float g_viewPortY; + float g_viewPortWidth; + float g_viewPortHeigh; +}; + +#include "guishader_common.hlsl" + +float4 PS(PS_INPUT input) : SV_TARGET +{ + return StereoInterlaced(input, STEREO_LEFT_EYE_INDEX); +} + + diff --git a/system/shaders/guishader_interlaced_right.hlsl b/system/shaders/guishader_interlaced_right.hlsl new file mode 100644 index 0000000..394d5b9 --- /dev/null +++ b/system/shaders/guishader_interlaced_right.hlsl @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2005-2015 Team Kodi + * http://kodi.tv + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#define STEREO_MODE_SHADER + +Texture2D texView : register(t0); + +cbuffer cbViewPort : register(b1) +{ + float g_viewPortX; + float g_viewPortY; + float g_viewPortWidth; + float g_viewPortHeigh; +}; + +#include "guishader_common.hlsl" + +float4 PS(PS_INPUT input) : SV_TARGET +{ + return StereoInterlaced(input, STEREO_RIGHT_EYE_INDEX); +} + + diff --git a/system/shaders/guishader_multi_texture_blend.hlsl b/system/shaders/guishader_multi_texture_blend.hlsl new file mode 100644 index 0000000..77c2e79 --- /dev/null +++ b/system/shaders/guishader_multi_texture_blend.hlsl @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2005-2015 Team Kodi + * http://kodi.tv + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#include "guishader_common.hlsl" + +Texture2D txDiffuse[2] : register(t0); + +float4 PS(PS_INPUT input) : SV_TARGET +{ + return tonemapHDR(adjustColorRange(input.color * txDiffuse[0].Sample(LinearSampler, input.tex) * + txDiffuse[1].Sample(LinearSampler, input.tex2))); +} + + diff --git a/system/shaders/guishader_texture.hlsl b/system/shaders/guishader_texture.hlsl new file mode 100644 index 0000000..665aff0 --- /dev/null +++ b/system/shaders/guishader_texture.hlsl @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2005-2015 Team Kodi + * http://kodi.tv + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#include "guishader_common.hlsl" + +Texture2D texMain : register(t0); + +float4 PS(PS_INPUT input) : SV_TARGET +{ + return tonemapHDR(adjustColorRange(input.color * texMain.Sample(LinearSampler, input.tex))); +} + + diff --git a/system/shaders/guishader_texture_noblend.hlsl b/system/shaders/guishader_texture_noblend.hlsl new file mode 100644 index 0000000..1daaa20 --- /dev/null +++ b/system/shaders/guishader_texture_noblend.hlsl @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2005-2015 Team Kodi + * http://kodi.tv + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#include "guishader_common.hlsl" + +Texture2D texMain : register(t0); + +float4 PS(PS_INPUT input) : SV_TARGET +{ + return texMain.Sample(LinearSampler, input.tex); +} + + diff --git a/system/shaders/guishader_vert.hlsl b/system/shaders/guishader_vert.hlsl new file mode 100644 index 0000000..508cbb7 --- /dev/null +++ b/system/shaders/guishader_vert.hlsl @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2005-2015 Team Kodi + * http://kodi.tv + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#include "guishader_common.hlsl" + +PS_INPUT VS(VS_INPUT input) +{ + PS_INPUT output = (PS_INPUT)0; + output.pos = mul(input.pos, worldViewProj); + output.color = input.color; + output.tex = input.tex; + output.tex2 = input.tex2; + + return output; +} diff --git a/system/shaders/output_d3d.fx b/system/shaders/output_d3d.fx new file mode 100644 index 0000000..eebc200 --- /dev/null +++ b/system/shaders/output_d3d.fx @@ -0,0 +1,197 @@ +/* + * Copyright (C) 2005-2015 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#if defined(KODI_3DLUT) +float2 m_LUTParams; // x- scale, y- offset +texture3D m_LUT; + +SamplerState LutSampler : IMMUTABLE +{ + AddressU = CLAMP; + AddressV = CLAMP; + AddressW = CLAMP; + Filter = MIN_MAG_MIP_LINEAR; +}; +#endif +#if defined(KODI_DITHER) +float3 m_ditherParams; +texture2D m_ditherMatrix; + +SamplerState DitherSampler : IMMUTABLE +{ + AddressU = WRAP; + AddressV = WRAP; + Filter = MIN_MAG_MIP_POINT; +}; +#endif +#if (defined(KODI_TONE_MAPPING_ACES) || defined(KODI_TONE_MAPPING_HABLE) || defined(KODI_HLG_TO_PQ)) +static const float ST2084_m1 = 2610.0f / (4096.0f * 4.0f); +static const float ST2084_m2 = (2523.0f / 4096.0f) * 128.0f; +static const float ST2084_c1 = 3424.0f / 4096.0f; +static const float ST2084_c2 = (2413.0f / 4096.0f) * 32.0f; +static const float ST2084_c3 = (2392.0f / 4096.0f) * 32.0f; +#endif +#if defined(KODI_TONE_MAPPING_REINHARD) +float g_toneP1; +float3 g_coefsDst; + +float reinhard(float x) +{ + return x * (1.0f + x / (g_toneP1 * g_toneP1)) / (1.0f + x); +} +#endif +#if defined(KODI_TONE_MAPPING_ACES) +float g_luminance; +float g_toneP1; + +float3 aces(float3 x) +{ + const float A = 2.51f; + const float B = 0.03f; + const float C = 2.43f; + const float D = 0.59f; + const float E = 0.14f; + return (x * (A * x + B)) / (x * (C * x + D) + E); +} +#endif +#if defined(KODI_TONE_MAPPING_HABLE) +float g_toneP1; +float g_toneP2; + +float3 hable(float3 x) +{ + const float A = 0.15f; + const float B = 0.5f; + const float C = 0.1f; + const float D = 0.2f; + const float E = 0.02f; + const float F = 0.3f; + return ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - E / F; +} +#endif +#if (defined(KODI_TONE_MAPPING_ACES) || defined(KODI_TONE_MAPPING_HABLE)) +float3 inversePQ(float3 x) +{ + x = pow(max(x, 0.0f), 1.0f / ST2084_m2); + x = max(x - ST2084_c1, 0.0f) / (ST2084_c2 - ST2084_c3 * x); + x = pow(x, 1.0f / ST2084_m1); + return x; +} +#endif +#if defined(KODI_HLG_TO_PQ) +float3 inverseHLG(float3 x) +{ + const float B67_a = 0.17883277f; + const float B67_b = 0.28466892f; + const float B67_c = 0.55991073f; + const float B67_inv_r2 = 4.0f; + x = (x <= 0.5f) ? x * x * B67_inv_r2 : exp((x - B67_c) / B67_a) + B67_b; + return x; +} + +float3 tranferPQ(float3 x) +{ + x = pow(x / 1000.0f, ST2084_m1); + x = (ST2084_c1 + ST2084_c2 * x) / (1.0f + ST2084_c3 * x); + x = pow(x, ST2084_m2); + return x; +} +#endif + + +float4 output4(float4 color, float2 uv) +{ +#if defined(KODI_TONE_MAPPING_REINHARD) + float luma = dot(color.rgb, g_coefsDst); + color.rgb *= reinhard(luma) / luma; +#endif +#if defined(KODI_TONE_MAPPING_ACES) + color.rgb = inversePQ(color.rgb); + color.rgb *= (10000.0f / g_luminance) * (2.0f / g_toneP1); + color.rgb = aces(color.rgb); + color.rgb *= (1.24f / g_toneP1); + color.rgb = pow(color.rgb, 0.27f); +#endif +#if defined(KODI_TONE_MAPPING_HABLE) + color.rgb = inversePQ(color.rgb); + color.rgb *= g_toneP1; + color.rgb = hable(color.rgb * g_toneP2) / hable(g_toneP2); + color.rgb = pow(color.rgb, 1.0f / 2.2f); +#endif +#if defined(KODI_HLG_TO_PQ) + color.rgb = inverseHLG(color.rgb); + float3 ootf_2020 = float3(0.2627f, 0.6780f, 0.0593f); + float ootf_ys = 2000.0f * dot(ootf_2020, color.rgb); + color.rgb *= pow(ootf_ys, 0.2f); + color.rgb = tranferPQ(color.rgb); +#endif +#if defined(KODI_3DLUT) + half3 scale = m_LUTParams.x; + half3 offset = m_LUTParams.y; + float3 lutRGB = m_LUT.Sample(LutSampler, color.rgb*scale + offset).rgb; + color.rgb = scale.x ? lutRGB : color.rgb; +#endif +#if defined(KODI_DITHER) + half2 ditherpos = uv * m_ditherParams.xy; + // scale ditherval to [0,1) + float ditherval = m_ditherMatrix.Sample(DitherSampler, ditherpos).r * 16.0f; + color.rgb = floor(color.rgb * m_ditherParams.z + ditherval) / m_ditherParams.z; +#endif + return color; +} + +float4 output(float3 color, float2 uv) +{ + return output4(float4(color, 1.0), uv); +} + +#if defined(KODI_OUTPUT_T) +#include "convolution_d3d.fx" + +#if (defined(KODI_TONE_MAPPING_ACES) || defined(KODI_TONE_MAPPING_HABLE) || defined(KODI_HLG_TO_PQ)) +#define PS_PROFILE ps_4_0_level_9_3 +#else +#define PS_PROFILE ps_4_0_level_9_1 +#endif + +float3 m_params; // 0 - range (0 - full, 1 - limited), 1 - contrast, 2 - brightness + +float4 OUTPUT_PS(VS_OUTPUT In) : SV_TARGET +{ + float4 color = g_Texture.Sample(KernelSampler, In.TextureUV); + [flatten] if (m_params.x) + color = saturate(0.0625 + color * 219.0 / 255.0); + + color *= m_params.y * 2.0; + color += m_params.z - 0.5; + color.a = 1.0; + + return output4(color, In.TextureUV); +} + +technique11 OUTPUT_T +{ + pass P0 + { + SetVertexShader( VS_SHADER ); + SetPixelShader( CompileShader( PS_PROFILE, OUTPUT_PS() ) ); + } +}; +#endif
\ No newline at end of file diff --git a/system/shaders/rp_output_d3d.fx b/system/shaders/rp_output_d3d.fx new file mode 100644 index 0000000..69ca56d --- /dev/null +++ b/system/shaders/rp_output_d3d.fx @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2017 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +texture2D g_Texture; +float2 g_viewPort; +float m_params[1]; // 0 - range (0 - full, 1 - limited) + +SamplerState TextureSampler : IMMUTABLE +{ + AddressU = CLAMP; + AddressV = CLAMP; +#ifdef SAMP_NEAREST + Filter = MIN_MAG_MIP_POINT; +#else + Filter = MIN_MAG_MIP_LINEAR; +#endif +}; + +struct VS_INPUT +{ + float4 Position : POSITION; + float2 TextureUV : TEXCOORD0; +}; + +struct VS_OUTPUT +{ + float2 TextureUV : TEXCOORD0; + float4 Position : SV_POSITION; +}; + +// +// VS for rendering in screen space +// +VS_OUTPUT OUTPUT_VS(VS_INPUT In) +{ + VS_OUTPUT output = (VS_OUTPUT)0; + output.Position.x = (In.Position.x / (g_viewPort.x / 2.0)) - 1; + output.Position.y = -(In.Position.y / (g_viewPort.y / 2.0)) + 1; + output.Position.z = output.Position.z; + output.Position.w = 1.0; + output.TextureUV = In.TextureUV; + + return output; +} + +float4 OUTPUT_PS(VS_OUTPUT In) : SV_TARGET +{ + float4 color = g_Texture.Sample(TextureSampler, In.TextureUV); + [flatten] if (m_params[0]) + color = saturate(0.0625 + color * 219.0 / 255.0); + + color.a = 1.0; + + return color; +} + +technique11 OUTPUT_T +{ + pass P0 + { + SetVertexShader( CompileShader( vs_4_0_level_9_1, OUTPUT_VS()) ); + SetPixelShader( CompileShader( ps_4_0_level_9_1, OUTPUT_PS() ) ); + } +}; diff --git a/system/shaders/yuv2rgb_d3d.fx b/system/shaders/yuv2rgb_d3d.fx new file mode 100644 index 0000000..0500526 --- /dev/null +++ b/system/shaders/yuv2rgb_d3d.fx @@ -0,0 +1,138 @@ +/* + * Copyright (C) 2005-2013 Team XBMC + * http://xbmc.org + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with XBMC; see the file COPYING. If not, see + * <http://www.gnu.org/licenses/>. + * + */ + +#include "output_d3d.fx" + +texture2D g_Texture[3]; +float4x4 g_ColorMatrix; +float2 g_StepXY; +float2 g_viewPort; +float4x4 g_primMat; +float g_gammaDstInv; +float g_gammaSrc; + +SamplerState YUVSampler : IMMUTABLE +{ + AddressU = CLAMP; + AddressV = CLAMP; + Filter = MIN_MAG_MIP_POINT; +}; + +struct VS_INPUT +{ + float4 Position : POSITION; + float2 TextureY : TEXCOORD0; + float2 TextureUV : TEXCOORD1; +}; + +struct VS_OUTPUT +{ + float2 TextureY : TEXCOORD0; + float2 TextureUV : TEXCOORD1; + float4 Position : SV_POSITION; +}; + +VS_OUTPUT VS(VS_INPUT In) +{ + VS_OUTPUT output = (VS_OUTPUT)0; + output.Position.x = (In.Position.x / (g_viewPort.x / 2.0)) - 1; + output.Position.y = -(In.Position.y / (g_viewPort.y / 2.0)) + 1; + output.Position.z = output.Position.z; + output.Position.w = 1.0; + output.TextureY = In.TextureY; + output.TextureUV = In.TextureUV; + + return output; +} + +#ifdef NV12_SNORM_UV +inline float unormU(float c) +{ + c *= 0.5; + if (c < 0.0) c += 1.0; + return saturate(c); +} +inline float2 unormUV(float2 rg) +{ + return float2(unormU(rg.x), unormU(rg.y)); +} +#endif + +float4 YUV2RGB(VS_OUTPUT In) : SV_TARGET +{ +#if defined(XBMC_YV12) //|| defined(XBMC_NV12) + float4 YUV = float4(g_Texture[0].Sample(YUVSampler, In.TextureY ).r + , g_Texture[1].Sample(YUVSampler, In.TextureUV).r + , g_Texture[2].Sample(YUVSampler, In.TextureUV).r + , 1.0); +#elif defined(XBMC_NV12) + float4 YUV = float4(g_Texture[0].Sample(YUVSampler, In.TextureY).r + #if defined(NV12_SNORM_UV) + , unormUV(g_Texture[1].Sample(YUVSampler, In.TextureUV).rg) + #else + , g_Texture[1].Sample(YUVSampler, In.TextureUV).rg + #endif + , 1.0); +#elif defined(XBMC_YUY2) || defined(XBMC_UYVY) + // The HLSL compiler is smart enough to optimize away these redundant assignments. + // That way the code is almost identical to the OGL shader. + float2 stepxy = g_StepXY; + float2 pos = In.TextureY; + pos = float2(pos.x - (stepxy.x * 0.25), pos.y); + float2 f = frac(pos / stepxy); + + //y axis will be correctly interpolated by opengl + //x axis will not, so we grab two pixels at the center of two columns and interpolate ourselves + float4 c1 = g_Texture[0].Sample(YUVSampler, float2(pos.x + ((0.5 - f.x) * stepxy.x), pos.y)); + float4 c2 = g_Texture[0].Sample(YUVSampler, float2(pos.x + ((1.5 - f.x) * stepxy.x), pos.y)); + + /* each pixel has two Y subpixels and one UV subpixel + YUV Y YUV + check if we're left or right of the middle Y subpixel and interpolate accordingly*/ + #if defined(XBMC_YUY2) // BGRA = YUYV + float leftY = lerp(c1.b, c1.r, f.x * 2.0); + float rightY = lerp(c1.r, c2.b, f.x * 2.0 - 1.0); + float2 outUV = lerp(c1.ga, c2.ga, f.x); + #elif defined(XBMC_UYVY) // BGRA = UYVY + float leftY = lerp(c1.g, c1.a, f.x * 2.0); + float rightY = lerp(c1.a, c2.g, f.x * 2.0 - 1.0); + float2 outUV = lerp(c1.br, c2.br, f.x); + #endif + float outY = lerp(leftY, rightY, step(0.5, f.x)); + float4 YUV = float4(outY, outUV, 1.0); +#endif + + float4 rgb = mul(YUV, g_ColorMatrix); +#if defined(XBMC_COL_CONVERSION) + rgb.rgb = pow(max(0.0, rgb.rgb), g_gammaSrc); + rgb.rgb = max(0.0, mul(rgb, g_primMat).rgb); + rgb.rgb = pow(rgb.rgb, g_gammaDstInv); +#endif + return output4(rgb, In.TextureY); +} + +technique11 YUV2RGB_T +{ + pass P0 + { + SetVertexShader( CompileShader( vs_4_0_level_9_1, VS() ) ); + SetPixelShader( CompileShader( ps_4_0_level_9_1, YUV2RGB() ) ); + } +}; |