0xFF
- это значение, используемое в коде раскладки клавиатуры для обозначения «без сопоставления».Вот как это определено в kbd.h
Windows DDK / SDK:
#define VK__none_ 0xFF
Каждый код сканирования, который не имеет назначенного значения, сопоставляется с этим кодом виртуальной клавиши через макросы.Например, код сканирования 0 не имеет сопоставления:
#define T00 _EQ( _none_ )
Если клавиша Fn выдает 0xFF, то это потому, что код сканирования клавиши Fn не имеет сопоставления , а не потому, что 0xFF означаетклавиша Fn.Нет стандартного кода сканирования для клавиш Fn;это зависит от производителя, и поэтому вряд ли будет отображено что-либо значимое в стандартной раскладке клавиатуры.
Что касается того, почему будет отправлено VK 0xFF: вероятно, это не так.Специфичные для производителя клавиши и кнопки иногда отправляют (с аппаратного обеспечения) код сканирования, который не сопоставлен ни с чем, но может быть обнаружен по коду сканирования .Когда программное обеспечение производителя обнаруживает ключ, оно предпринимает некоторые действия, такие как отправка VK_NEXT (но, возможно, действие зависит от настроек или того, какое приложение имеет фокус).Сфокусированное приложение также видит нажатие клавиш, но обычно ничего не делает, потому что для этого кода сканирования не было сопоставления (wParam было 0xFF).
Код сканирования можно найти в битах 16-23 в lParamСообщение WM_KEYDOWN.