Chcę wykryć wciśnięcie klawisza FN. Chcę również zasymulować jego kliknięcie. Czy to wykonalne?
Tak.
W załączniku masz program w Delphi zakładający lokalnego Hooka na klawiaturę, bo taki nie sprawi problemów przy UAC. Zobacz jaki kod zwraca ten klawisz FN przy naciskaniu, bo nie mogę nic za bardzo znaleźć w spisie kodów vk na MSDNie.
To co chcesz zrobić, da się osiągnąć. Ale globalnym hookiem low levelowym na klawiaturę. Należy sprawdzić czy wciskany klawisz to ten FN, zasymulować poprzez SendInput
naciskanie innego, a następnie wyjść z funkcji obsługi Hooka zwracając jeden. Spowoduje to przejęcie oryginalnego klawisza. Poczytaj sobie na MSDNie o WH_KEYBOARD_LL
.
Sprawdziłem u siebie wciśnięcia klawisza Fn
nie jest wykrywane ale klawisz Fn Lock
już tak, w programie @olesio to $FF ($FF)
za to pod C# Keys.None
więc mało pomocna informacja. :P
Pytałem o kod klawisza gdyż nie mogę tego sam ustalić (nie posiadam takiego na swojej klawiaturze). Może faktycznie jego kod vk to FF czyli 255. Inne klawisze ze spisu https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx mój kod raczej wykrywa poprawnie oraz podaje nazwe stałej. Oczywiście jeżeli ustali się kod tego klawisza to należy go przechwycić symulując inny, tak jak opisałem to we wcześniejszym postcie.
EDIT: po szybkim googlowaniu w odpowiedziach na pytanie o FN na MSDNie i jakimś wątku na forum Stack OverFlow wynika, że ten kod to raczej faktycznie FF. Najlepiej jakby autor wątku napisał o jaki język programowania mu chodzi by stworzyć taki program, bo tag programowanie
jest za ogólny i bzdetny. Nie pasuje tutaj za bardzo.
A kod pokazujący klawisze ma zwrócić kod hex klawisza, jeżeli nie ma go wśród znanych nazw stałych, jakie kiedyś wygooglowałem.
@olesio - sprawdziłem u siebie; Poniżej zawartość memo po wciśnięciu i puszczeniu klawisza Fn
:
$FF ($FF) - DOWN
$FF ($FF) - UP