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" />