Only in so far as some devices are not good at reporting physical on/off events, older GE switches in particular.
The functionality of not processing events that are not state changes is an app decision. An app could see every event by being coded to do so. Rule Machine and the other built-in apps are not coded to do that, to respond to events the are not state changes. In fact, the entire concept of Rule Machine is built on state changes, at least as far as rules are concerned (not so much as for triggers).
Having said that, I can see what you want to accomplish. A very simple Groovy app could do it for you. The idea would be to catch every physical event, and turn it into something like a button push. A button push is a state-free event, unlike a switch, and you are actually using the switch in this case like a button.
I wrote a little app for you, below. You would create a virtual button device, and select it in the app. Then your rule (trigger) in RM would be triggered by a button push from that device (button 1). And the little app turns every physical on event into a button push. It's a very tiny app. This is perhaps a kludge, but it should work for what you want to do.
Meanwhile, I'll think about a more graceful way to get what you want. I suppose one way to do it would be to have physical switch on as a trigger use the means of subscribing to events that looks at every event, not just state changes. I can't at the moment thing of any harm that would come from doing this, but I haven't thought about it for very long.
definition(
name: "Physical to Button",
namespace: "bravenel",
author: "Bruce Ravenel",
description: "Turn Physical On to Button Push",
category: "My Apps",
iconUrl: "",
iconX2Url: "",
iconX3Url: "")
preferences {
section {
input "aSwitch", "capability.switch", title: "Select physical switch"
input "button", "capability.pushableButton", title: "Select virtual button device"
}
}
def initialize() {
subscribe(aSwitch, "switch.on", switchHandler, [filterEvents: false])
}
def switchHandler(evt) {
if(evt.type == "physical" && evt.value == "on") button.push(1)
}
def installed() {
initialize()
}
def updated() {
unsubscribe()
initialize()
}