There are a number of keypad-like products with hardware- or software-assignable keys. I recently bought this, which is nice in that the key assignments are stored in hardware, but the macro functionality stopped working a month in. Regardless, there are a ton of products like this, such as x-keys, etc.