The following is specific to just position.
Create a new group -- call it OSCs (onscreen controls -- ranaming is not mandatory -- just a suggestion)
Select the group and add a Filter > Distortion > Poke (actually, many of the filters will have publishable OSCs for use, but Poke is one of the most simple and perfect for position control.) At the bottom of the Poke inspector, check Publish OSC
These next steps are important and mandatory:
Select the Group and in the Group inspector, set the Type to 2D and check Fixed Resolution.
Go into the Properties inspector > Timing and set the duration to the length of the project (by default, this arrangement of the group with the Poke filter will be 1 frame long. If the values are in timecode, type the time length in the Duration field, otherwise type the number of frames of your project [The difference will depend on the timeline setting of Show Timecode or Show Frames.])
For the object you want to control:
Select it (or its parent group) and in Properties > Transform, dial down the Position parameter exposing X,Y,Z.
Right click on X and Add Parameter Behavior > Link. Right click on Y and Add ParameterBehavior > Link.
In the Behaviors inspector, for the Link behaviors, drag the OSCs group to the source object wells.
For each Source Parameter, click on Compatible Parameters and choose:
Filters > Poke > Center > X for one, Y for the other (you must have separate link parameter behaviors for X and Y.)
Your object under control will move immediatly -- this next step corrects the displacement.
At the bottom of each Link behavior you'll see an X Offset for one and Y Offset for the other. Set both of these to -0.5 *.
In order to make the position keyframeable in FCPX, you must publish the Poke Center parameter (and NOT the source object's Position controls!)
* The displacement can be explained this way:
Motion's canvas resolution is independent of the destination video. The coordinate system starts at 0,0 in the center of the canvas and goes from -0.5 on the left and bottom, to 0.5 on the right and top sides -- no matter what the resolution of the video is! Distance is corrected by Aspect Ratio. Coordinate systems of groups are relative, not absolute, so when you add the link from the Poke Center to the position of the group or object, it is offset by 0.5 times the direction resolution (pixel size times aspect ratio.) Long explanation short, this makes features like these in Motion adaptable across all resolutions of video. It's not important that you understand the explanation, just take the offset adjustments between an OSC and an object under link as gospel. You can also use slight variations in offsets to align an OSC with an upper left corner of some object, etc. This is particularly useful if your object contains editable text as the Text Object will always be above the OSC and you'll need to resolve the conflict in order to use both in FCPX.
For more advanced Onscreen Controls, for example: both position and rotation, there are a few filters like Scrape, Target, Stripes (and others) that can be used. Link the Rotation Z parameter to the Rotation parameter of the filter. Some of these filters are automatically offset from 0 degrees so you might have to add the Offset amount to give the starting angle you want for your FCPX effect.
OSCs are not limited to Distortion filters. Several of the Tiling filters have very interesting OSCs and there are a few in Stylize that can be put to use as well (such as Relief).
Any filter you can find that has the option to Publish OSC can be adapted for use with FCPX effects.
HTH