Как имитировать нажатие Fn+F6?

Метод SendKeys.Send не позволяет нажимать клавишу Fn, которая есть на клавиатуре ноутбука. Как я могу имитировать нажатие этой клавиши с С#?


person Anatolii Humennyi    schedule 21.07.2013    source источник
comment
Я совершенно уверен, что вы не можете. Я считаю, что ключ fn поддерживается аппаратно.   -  person Scott    schedule 21.07.2013


Ответы (2)


Вы не можете, и вам не нужно. Клавиша Fn существует только как клавиша, если речь идет о схеме клавиатуры.

Когда код клавиши отправляется в операционную систему, это выглядит так, как если бы функциональные клавиши были обычными клавишами на обычной клавиатуре. Операционная система даже не знает о существовании клавиши Fn, об этом заботится специальная схема клавиатуры в ноутбуке.

Чтобы заставить функциональную клавишу нажиматься на ноутбуке, просто отправьте код обычной клавиши для функциональной клавиши, как на обычной клавиатуре.

Если есть какие-то другие комбинации клавиш, где используется клавиша Fn, то они либо имеют свои коды клавиш, либо их просто невозможно отправить, потому что они обрабатываются ноутбуком, а не операционной системой.

person Guffa    schedule 21.07.2013

Я никогда не пробовал, но я думаю, что вы можете сделать это другим способом. Создайте событие keydown для textbox и нажмите клавишу fn во время выполнения, а затем проверьте, какое code или какое keyValue оно возвращает. Затем используйте этот value в своем методе SendKeys.Send.

person Shaharyar    schedule 21.07.2013
comment
А когда KeyDown даже не срабатывает? - person Henk Holterman; 21.07.2013
comment
Я попробовал это и e.KeyCode == 255. Если попытаться получить код сканирования из С++ через перехват клавиатуры, то код сканирования будет 113. Я попытался отправить этот код сканирования через SendInput (WinAPI), но ничего не происходит... - person Anatolii Humennyi; 21.07.2013