Keyboards work by generating "make codes" when keys are pressed and "break codes" when keys are released. These are collectively called scan codes. Scan codes are independent of ASCII.
Some keys generate more than one scan code. Each scan code is translated into an ASCII code.
Many of the "special" keys -- like home, end, pg up, pg dn, etc generate more than one make code.