1. This improved so that it can be used in different directions
2. I don't know if the idea of knowing a special character to send is a good idea or not. what if the element appears in wrong order or else where? why not using that if you just want to send a specific character by sendkeys() in marionette?
@bebef1987 @AlinT, how do you think?

@zacc 
Also, filing a bug later against marionette action.
Let's say we want to select a key from special character list of 'a'
action.press(self.marionette.find_element(keya)).move(self.marionette.find_element(specialkeya1)).release().perform()
there is a big issue that action chain would not detect the pop up list webelements on the fly.
it will failed on finding the element because the element is not yet there.

working around is to create another 2 action objects, but still failed.
action.press(self.marionette.find_element(keya)).perform()
action2.move(self.marionette.find_element(specialkeya1)).perform()
action3.release().perform()
It will not move and release in this case(but if you only perform action and action3, it works)