Fiz esse código pq nenhuma das minhas outras máscaras em javascript resolvia.

O comportamento é:

digitar: 1 aparecer 0,0001

digitar: 12 aparecer 0,0012

digitar: 123 aparecer 0,0123

digitar: 1234 aparecer 0,1234

digitar: 12345 aparecer 1,2345

digitar: 123456 aparecer 12,3456

digitar: 1234567 aparecer 123,4567

O bloco do if pode ser refatorado para ficar mais “bonito” e menos manual. Mas já é uma idéia de como fazer essa máscara para “peso”, usando javascript e um pouquinho de expressão regular.

<script type="text/javascript">
function id(el){
    return document.getElementById(el);
}
window.onload = function(){
	id('peso').onkeyup = function(){
		var v = this.value,
			integer = v.split(',')[0];


		v = v.replace(/\D/, "");
		v = v.replace(/^[0]+/, "");

		if(v.length <= 4 || !integer)
		{
			if(v.length === 1) v = '0,000' + v;
			if(v.length === 2) v = '0,00' + v;
			if(v.length === 3) v = '0,0' + v;
			if(v.length === 4) v = '0,' + v;
		} else {
			v = v.replace(/^(\d{1,})(\d{4})$/, "$1,$2");
		}

		this.value = v;
	}
};
</script>
<input type="text" name="peso" id="peso" maxlength="8" />