Kodi Community Forum
How can I help? - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Development (https://forum.kodi.tv/forumdisplay.php?fid=32)
+--- Forum: Kodi Application (https://forum.kodi.tv/forumdisplay.php?fid=93)
+---- Forum: RetroPlayer Development (https://forum.kodi.tv/forumdisplay.php?fid=194)
+---- Thread: How can I help? (/showthread.php?tid=257054)

Pages: 1 2


How can I help? - magnumopus - 2016-01-19

First of all, a massive thanks to Garbear and everyone who has contributed to this immense project up to this point.

I have been following this forum for close to 2 years now, and finally decided it was worth trying it out. To say I am impressed is an understatement. I also feel that I have been sitting on the sidelines for too long, so I would like to throw my hat into the ring and offer my help in any way. Is there a central issue tracking system where we can pick off issues to look at?

My skill set includes:
- Full time C/Java developer
- Very limited C++ and Python.
- Not very much spare time.

Some things I think I can do:
- I own a bunch of controllers, so I could possibly give you button maps for these?
- Documentation. I could add a bunch more info to the wiki.
- The OpenELEC builds have generally lagged behind the other builds by a couple of days. Is there an automated build system for retroplayer currently? If not, I could look into setting this up.
- Low priority bugs

Garbear, if you read this, please let me know where you need the resources and I will try my best!


RE: How can I help? - N3MIS15 - 2016-01-19

As a humble user, I think getting input PR (https://github.com/xbmc/xbmc/pull/8807) mainlined should be priority. If you could help out on any of the todos, I'm sure it would be appreciated by all.


RE: How can I help? - zag - 2016-01-19

Controller keymap instructions here

http://forum.kodi.tv/showthread.php?tid=252465


RE: How can I help? - garbear - 2016-01-19

(2016-01-19, 09:13)magnumopus Wrote: My skill set includes:
- Full time C/Java developer
- Very limited C++ and Python.
- Not very much spare time.

Some things I think I can do:
- I own a bunch of controllers, so I could possibly give you button maps for these?
- Documentation. I could add a bunch more info to the wiki.
- The OpenELEC builds have generally lagged behind the other builds by a couple of days. Is there an automated build system for retroplayer currently? If not, I could look into setting this up.
- Low priority bugs

Garbear, if you read this, please let me know where you need the resources and I will try my best!

Hi magnumopus,

You've pretty much nailed the most appropriate TODOs. As I'm focusing on controller input now, your button maps would be most appreciated. Even if a button map already exists for your device, you should assume that you know better and send us your changes anyway Wink

The next biggest help would be the low-priority bugs listed here in PR 8807. Hunting these down and fixing them would be a good way to beef up your C++ knowledge. Fixing XBMC bugs is how I learned C++ Smile I'm here to help if you get stuck.

Likewise, documenting whatever you can (especially code) will increase your familiarity with the project, not to mention helping those who come after you.

@lrusak is handling OE builds now (I've linked to them in the Builds thread recently) and I think he keeps those pretty up-to-date, but maybe he could use some help anyways.

Finally, we need help on anything that doesn't scale. By that, I mean the tasks that much be largely repeated many times. Take for example, adding the license to each libretro core's addon.xml. This is a simple task; research the core, discover its license, add to addon.xml. However, scaling this simple addition to 50 libretro cores is a huge task for a single person. Trust me, having done this, I speak from experience Wink

And of course, I fucked up this basic task. I added the license to the <description> tag (like this) instead of using the <license> tag dedicated to this exact purpose (like this). FML. If by help, you meant a masochistic desire for torturous, monotonous work, fixing these would be a place to start Wink


RE: How can I help? - RockerC - 2016-01-20

You could also try a hand at porting more libretro cores to Kodi and improve the kodi.wiki for that port process, see:

http://forum.kodi.tv/showthread.php?tid=224328
http://kodi.wiki/view/Porting_Libretro_cores_to_game_add-ons
http://kodi.wiki/view/Game_add-ons


RE: How can I help? - magnumopus - 2016-01-21

Thanks for the replies!

I'll start with the controller maps, then move onto some of the low hanging fruit from PR 8807 when I get some free time.


RE: How can I help? - garbear - 2016-01-28

If you're looking for a good starter project, I'm looking to add joystick families to our button mapper.

The basic idea is to gather the alternative driver names from Kodi's old joystick keymaps and create "joystick families", which I have done (see joystickfamilies.xml).

Then, if the user plugs in a controller belonging to a joystick family, the button mapper can use a button map from a different controller of the same family.

This would make the button mapper a lot smarter!


RE: How can I help? - magnumopus - 2016-01-28

I am happy do this. What is the timeframe?


RE: How can I help? - garbear - 2016-01-28

That's the beauty of addon-ifying the button mapper. It can be updated outside of Kodi, independent of any release cycles that core happens to be on. You literally have forever Smile


RE: How can I help? - garbear - 2016-02-06

If anyone is looking to help, we need to go through Kodi's keyboard.xml and translate the actions to the new joystick.xml. I've already done some basic ones.

EDIT: and joystick.Microsoft.Xbox.360.Controller.xml


RE: How can I help? - magnumopus - 2016-02-06

What is wrong with the ones you have already done? It looks like you have a good coverage of all the functions I generally use. Did you just need to apply functions to the remaining free buttons such as rightstickup/rightstickright?


RE: How can I help? - garbear - 2016-02-06

No, see how the old joystick.Microsoft.Xbox.360.Controller.xml extensively overloaded buttons for different windows. That's the keymap I should have linked to.


RE: How can I help? - longelf - 2016-02-09

Not knowing how to use git, or really being completely sure what is needed, I thought I'd give this a go. So far I went through the FullscreenVideo section, although I'll only be pasting my work here rather than doing anything with git. You know, because of my lack of git skills. Big Grin

Code:
<FullscreenVideo>
    <joystick>
      <a>Pause</a>
      <b>Stop</b>
      <x>OSD</x>
      <y>FullScreen</y>
      <start>Info</start>
      <back>Seek(-7)</back>
      <left>StepBack</left>
      <right>StepForward</right>
      <up>ChapterOrBigStepForward</up>
      <down>ChapterOrBigStepBack</down>
      <leftthumbbutton>ActivateWindow(ShutdownMenu)</leftthumbbutton>
      <rightthumbbutton>AudioNextLanguage</rightthumbbutton>
      <leftstickleft>AnalogSeekBack</leftstickleft>
      <leftstickright>AnalogSeekForward</leftstickright>
      <leftstickup>AnalogRewind</leftstickup>
      <leftstickdown>AnalogFastForward</leftstickdown>
      <rightstickup>VolumeUp</rightstickup>
      <rightstickdown>VolumeDown</rightstickdown>
      <guide>ActivateWindow(Home)</guide>
      <lefttrigger>AspectRatio</lefttrigger>
      <righttrigger>ShowSubtitles</righttrigger>
    </joystick>
  </FullscreenVideo>

I'm guessing this just needs to be pasted into the new joystick.xml file? If this is all correct, I'll get working on the other window mappings and paste them here.


RE: How can I help? - garbear - 2016-02-09

The keys are defined in game.controller.default's layout.xml. "leftthumbbutton" should be "leftthumb", and you're missing leftshoulder, same for rights.

I think that you should set the left stick exclusively to analog seek, and make both triggers and shoulders do analog ff/rw. Some games use triggers, some use shoulders, so if they both do the same the user won't miss out on in-game rewind.

But basically that's exactly what we need. Paste the full joystick.xml, and I'll include it in the builds. thanks!


RE: How can I help? - longelf - 2016-02-09

OK, here it is. Hopefully there aren't any typos, I went through it pretty thoroughly. These are all the button mappings from the old map converted to the new map, with an eye to consistency in button usage where possible. Probably a good idea for fresh eyes to go over it once to check it over, I think I've gone temporarily XML blind.

Code:
<?xml version="1.0" encoding="UTF-8"?>
<keymap>
  <global>
    <joystick>
      <a>Select</a>
      <b>Back</b>
      <x>ContextMenu</x>
      <y>FullScreen</y>
      <start>ActivateWindow(PlayerControls)</start>
      <back>Back</back>
      <guide>ActivateWindow(Home)</guide>
      <up>Up</up>
      <down>Down</down>
      <right>Right</right>
      <left>Left</left>
      <leftthumb>Screenshot</leftthumbbutton>
      <rightthumb>ActivateWindow(ShutdownMenu)</rightthumbbutton>
      <lefttrigger>ScrollUp</lefttrigger>
      <righttrigger>ScrollDown</righttrigger>
      <leftbumper>ScrollUp</leftbumper>
      <rightbumper>ScrollDown</rightbumper>
      <leftstickleft>Left</leftstickleft>
      <leftstickright>Right</leftstickright>
      <leftstickup>Up</leftstickup>
      <leftstickdown>Down</leftstickdown>
      <rightstickleft>VolumeDown</rightstickleft>
      <rightstickright>VolumeUp</rightstickright>
      <rightstickup>VolumeUp</rightstickup>
      <rightstickdown>VolumeDown</rightstickdown>
    </joystick>
  </global>
  <Home>
    <joystick>
      <start>Skin.ToggleSetting(HomeViewToggle)</start>
    </joystick>
  </Home>
  <MyFiles>
    <joystick>
      <rightbumper>Highlight</rightbumper>
    </joystick>
  </MyFiles>
  <MyMusicPlaylist>
    <joystick>
      <leftbumper>Delete</leftbumper>
    </joystick>
  </MyMusicPlaylist>
  <MyMusicFiles>
  </MyMusicFiles>
  <MyMusicLibrary>
  </MyMusicLibrary>
  <FullscreenGame>
    <joystick>
      <a>noop</a>
      <b>noop</b>
      <x>noop</x>
      <y>noop</y>
      <start>noop</start>
      <back>noop</back>
      <!--<guide>noop</guide>-->
      <up>noop</up>
      <down>noop</down>
      <right>noop</right>
      <left>noop</left>
      <leftthumb>noop</leftthumbbutton>
      <rightthumb>noop</rightthumbbutton>
      <lefttrigger>noop</lefttrigger>
      <righttrigger>noop</righttrigger>
      <leftbumper>noop</leftbumper>
      <rightbumper>noop</rightbumper>
      <leftstickleft>noop</leftstickleft>
      <leftstickright>noop</leftstickright>
      <leftstickup>noop</leftstickup>
      <leftstickdown>noop</leftstickdown>
      <rightstickleft>noop</rightstickleft>
      <rightstickright>noop</rightstickright>
      <rightstickup>noop</rightstickup>
      <rightstickdown>noop</rightstickdown>
    </joystick>
  </FullscreenGame>
  <FullscreenVideo>
    <joystick>
      <a>Pause</a>
      <b>Stop</b>
      <x>OSD</x>
      <y>FullScreen</y>
      <start>Info</start>
      <back>Seek(-7)</back>
      <guide>ActivateWindow(Home)</guide>
      <up>ChapterOrBigStepForward</up>
      <down>ChapterOrBigStepBack</down>
      <right>StepForward</right>
      <left>StepBack</left>
      <leftthumb>ShowSubtitles</leftthumbbutton>
      <rightthumb>AspectRatio</rightthumbbutton>
      <lefttrigger>AnalogRewind</lefttrigger>
      <righttrigger>AnalogFastForward</righttrigger>
      <leftbumper>AnalogRewind</leftbumper>
      <rightbumper>AnalogFastForward</rightbumper>
      <leftstickleft>AnalogSeekBack</leftstickleft>
      <leftstickright>AnalogSeekForward</leftstickright>
      <leftstickup>AnalogSeekForward</leftstickup>
      <leftstickdown>AnalogSeekBack</leftstickdown>
      <rightstickleft>VolumeDown</rightstickleft>
      <rightstickright>VolumeUp</rightstickright>
      <rightstickup>VolumeUp</rightstickup>
      <rightstickdown>VolumeDown</rightstickdown>
    </joystick>
  </FullscreenVideo>
  <FullscreenLiveTV>
    <joystick>
      <up>ChannelUp</up>
      <down>ChannelDown</down>
      <left>StepBack</left>
      <right>StepForward</right>
    </joystick>
  </FullscreenLiveTV>
  <FullscreenRadio>
    <joystick>
      <up>ChannelUp</up>
      <down>ChannelDown</down>
      <left>StepBack</left>
      <right>StepForward</right>
    </joystick>
  </FullscreenRadio>
  <FullscreenInfo>
    <joystick>
      <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>
      <x>Close</x>
      <leftthumb>Close</leftthumb>
      <rightthumb>Close</rightthumb>
    </joystick>
  </PlayerControls>
  <Visualisation>
    <joystick>
      <a>Pause</a>
      <b>Stop</b>
      <x>ActivateWindow(VisualisationSettings)</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>
      <leftstickleft>PreviousPreset</leftstickleft>
      <leftstickright>NextPreset</leftstickright>
    </joystick>
  </Visualisation>
  <MusicOSD>
    <joystick>
      <b>Close</b>
      <start>Info</start>
    </joystick>
  </MusicOSD>
  <VisualisationSettings>
    <joystick>
      <b>Close</b>
    </joystick>
  </VisualisationSettings>
  <VisualisationPresetList>
    <joystick>
      <b>Close</b>
    </joystick>
  </VisualisationPresetList>
  <SlideShow>
    <joystick>
      <a>Pause</a>
      <b>Stop</b>
      <y>ZoomNormal</y>
      <leftbumper>Rotate</leftbumper>
      <rightbumper>CodecInfo</rightbumper>
      <up>ZoomIn</up>
      <down>ZoomOut</down>
      <left>PreviousPicture</left>
      <right>NextPicture</right>
      <leftstickleft>AnalogMoveX</leftstickleft>
      <leftstickright>AnalogMoveX</leftstickright>
      <leftstickup>AnalogMoveY</leftstickup>
      <leftstickdown>AnalogMoveY</leftstickdown>
      <lefttrigger>ZoomOut</lefttrigger>
      <righttrigger>ZoomIn</righttrigger>
    </joystick>
  </SlideShow>
  <ScreenCalibration>
    <joystick>
      <x>ResetCalibration</x>
      <leftbumper>NextResolution</leftbumper>
      <rightbumper>NextCalibration</rightbumper>
    </joystick>
  </ScreenCalibration>
  <GUICalibration>
    <joystick>
      <x>ResetCalibration</x>
      <leftbumper>NextResolution</leftbumper>
      <rightbumper>NextCalibration</rightbumper>
    </joystick>
  </GUICalibration>
  <VideoOSD>
    <joystick>
      <button id="3">Close</button>
    </joystick>
  </VideoOSD>
  <VideoMenu>
    <joystick>
      <b>Stop</b>
      <x>OSD</x>
      <leftbumper>AspectRatio</leftbumper>
      <start>Info</start>
    </joystick>
  </VideoMenu>
  <OSDVideoSettings>
    <joystick>
      <leftbumper>AspectRatio</leftbumper>
      <x>Close</x>
    </joystick>
  </OSDVideoSettings>
  <OSDAudioSettings>
    <joystick>
      <leftbumper>AspectRatio</leftbumper>
      <x>Close</x>
    </joystick>
  </OSDAudioSettings>
  <VideoBookmarks>
    <joystick>
      <leftbumper>Delete</leftbumper>
    </joystick>
  </VideoBookmarks>
  <MyVideoLibrary>
  </MyVideoLibrary>
  <MyVideoFiles>
  </MyVideoFiles>
  <MyVideoPlaylist>
    <joystick>
      <leftbumper>Delete</leftbumper>
    </joystick>
  </MyVideoPlaylist>
  <VirtualKeyboard>
    <joystick>
      <b>BackSpace</b>
      <y>Symbols</y>
      <leftbumper>Shift</leftbumper>
      <leftthumb>Enter</leftthumb>
      <lefttrigger>CursorLeft</lefttrigger>
      <righttrigger>CursorRight</righttrigger>
    </joystick>
  </VirtualKeyboard>
  <ContextMenu>
    <joystick>
      <b>Close</b>
      <x>Close</x>
    </joystick>
  </ContextMenu>
  <Scripts>
    <joystick>
      <x>ContextMenu</x>
    </joystick>
  </Scripts>
  <Settings>
    <joystick>
      <b>PreviousMenu</b>
    </joystick>
  </Settings>
  <AddonInformation>
    <joystick>
      <b>Close</b>
    </joystick>
  </AddonInformation>
  <AddonSettings>
    <joystick>
      <b>Close</b>
    </joystick>
  </AddonSettings>
  <TextViewer>
    <joystick>
      <b>Close</b>
    </joystick>
  </TextViewer>
  <shutdownmenu>
    <joystick>
      <b>PreviousMenu</b>
      <leftthumb>PreviousMenu</leftthumb>
    </joystick>
  </shutdownmenu>
  <submenu>
    <joystick>
      <b>PreviousMenu</b>
    </joystick>
  </submenu>
  <MusicInformation>
    <joystick>
      <b>Close</b>
    </joystick>
  </MusicInformation>
  <MovieInformation>
    <joystick>
      <b>Close</b>
    </joystick>
  </MovieInformation>
  <NumericInput>
    <joystick>
      <b>BackSpace</b>
      <leftthumb>Enter</leftthumb>
    </joystick>
  </NumericInput>
  <GamepadInput>
    <joystick>
      <leftthumb>Stop</leftthumb>
    </joystick>
  </GamepadInput>
  <LockSettings>
    <joystick>
      <b>PreviousMenu</b>
      <leftthumb>Close</leftthumb>
    </joystick>
  </LockSettings>
  <ProfileSettings>
    <joystick>
      <b>PreviousMenu</b>
      <leftthumb>Close</leftthumb>
    </joystick>
  </ProfileSettings>
</keymap>