Como acessar os dados do acelerômetro / giroscópio a partir do Javascript?

Recentemente, encontrei alguns sites que parecem acessar o acelerômetro ou o giroscópio no meu laptop, detectando alterações na orientação ou no movimento. Como isso é feito? Devo me inscrever em algum tipo de evento no windowobjeto? Em quais dispositivos (laptops, telefones celulares, tablets)...