Indeed why not use manifest constants? Especially mouse buttons and address families are inherently extensible, because they are provided by OS. Variable enum may also force client code to be needlessly versioned to cope with members with conditional existence.