You can also use the eventHandler as Lee mentioned. It would looks something like that.
function itemClick()
if mouseStatus == 1 then
local items = game:getLinks(VGameItems)
for i = 1, #items do
if game.GameCurrentObject:getName() == items[i]:getName() and game.GameUsedItem:isEmpty() then
startSound("vispath:soundpath.ogg")
end
end
end
end
registerEventHandler("mainLoop", "itemClick")
mouseStatus = nil
function onMouseEvent(eventType, mousePosition)
if eventType == eEvtMouseLeftButtonDown then mouseStatus = 1 end
end
registerEventHandler("mouseEvent", "onMouseEvent", {eEvtMouseLeftButtonDown})
um not quite.

I was talking mouse event handler only. Query on left click if object below cursor exists & if so... is it an item? if yes then we call a called by other action containing a play sound action - I don't think the openAL Lua sound engine stuff is working correctly at the minute?
Also for on mouse move, we create a state variable "isItem = false" which we use to determine if we have already triggered the mouse enter item action. So if item below cursor exists, is an item & isItem = false then call action containing the play sound, then set isItem to true, elseif object below cursor does not exist & isItem = true, then set isItem to false. Similar to using a condition in the editor.