JavaScript (Node.js), 80 66 65 58 5857 bytes
s=>Buffer(s).map(c=>c%3?i^=~c:a[c+i++&1]+=.5a[c&1]+=++i&1,a=[i=0,0])&&a
##How###How?
###Identifying the characters
###Counting the mice
Instead of counting 'whole mice' we add \$1/2\$ to the relevant counter for each mouse body part.
##Commented###Commented
s => // s = input string
Buffer(s) // turn s into a buffer
.map(c => // for each ASCII code c:
c % 3 ? // if c modulo 3 is not equal to 0:
i ^= ~c // invert the least significant bit of i if c is even
// (must be 80, for 'P')
: // else:
a[c + i++ & 1] += .5++i & 1, // add 1/2 to a[i &update 1]a[0] if c is even (126 -> '~')
// or to a[(i ^ 1) & 1]a[1] if c is odd (111 -> 'o')
// increment i and add its parity
a = [i = 0, 0] // start with a = [0, 0] and i = 0
) && a // end of map(); return a[]