After an intensive search - found the answer was hiding in plain sight.
This trail provided some guidance and finally built it
<aura:iteration items="{!v.tlist}" var="tx" indexVar="idx">
<tr class="slds-hint-parent" data-data="{!idx}" onclick="{!c.rowClick}">
<td class="slds-cell-shrink" data-label="Select Row">
<label class="slds-checkbox" data-data="{!idx}">
<input type="checkbox" name="options" value="{!tx.isSelected}" data-data="{!idx}" />
<span class="slds-checkbox--faux" data-data="{!idx}"></span>
<span class="slds-assistive-text">Select Row</span>
</label>
</td>
<th class="slds-truncate" scope="row" data-label="Header" title="{!tx.Name}">
{!tx.Name}
</th>
<td class="slds-truncate" data-label="Process" title="{!tx.Name}">{!tx.Name}</td>
<td class="slds-truncate" data-label="GL Date" title="{!tx.xDate__c}"><ui:outputDate value="{!tx.xDate__c}" /></td>
<td colspan="2" class="slds-cell-shrink" data-label="Actions">
<div class="slds-button-group" role="group">
<button class="slds-button slds-button--icon" data-data="{!idx}" onclick="{!c.showdetailsClick}">
<c:svg ariaHidden="true" class="slds-button__icon"
xlinkHref="/resource/SLDS201/assets/icons/utility-sprite/svg/symbols.svg#table">
</c:svg>
<span class="slds-assistive-text">Details</span>
</button>
<ui:menu >
<ui:menuTriggerLink aura:id="trigger">
<button class="slds-button slds-button--icon" aria-haspopup="true">
<c:svg ariaHidden="true" class="slds-button__icon"
xlinkHref="/resource/SLDS201/assets/icons/utility-sprite/svg/symbols.svg#settings">
</c:svg>
<c:svg ariaHidden="true" class="slds-button__icon slds-button__icon--x-small"
xlinkHref="/resource/SLDS201/assets/icons/utility-sprite/svg/symbols.svg#down">
</c:svg>
<span class="slds-assistive-text">More Actions</span>
</button>
</ui:menuTriggerLink>
<ui:menuList class="actionMenu" aura:id="actionMenu">
<li class="uiMenuItem">
<a data-data="{!idx}" role="menuitem" onclick="{!c.editClick}">
<p class="slds-truncate">Edit</p>
</a>
</li>
<li class="uiMenuItem">
<a data-data="{!idx}" role="menuitem" onclick="{!c.deleteClick}">
<p class="slds-truncate">Unpost</p>
</a>
</li>
</ui:menuList>
</ui:menu>
</div>
</td>
</tr>
</aura:iteration>
Then Handle click event and get data-data like this
rowClick : function(component, event, helper) {
debugger;
if(!event.target) return;
if(event.target.parentNode === undefined) return;
var idx = event.target.getAttribute("data-data") || event.target.parentNode.getAttribute("data-data");
if(!idx) return; //there is NO data associated
var ix = parseInt(idx); //<--You get Index here
/* Use this record index to something */
}
I am using indexVar but there is no such limitation - You can directly use any data point- like recordId