I am unable to do that on my system with Win 8.1 (and Leap). But it has nothing to do with dual boot, as far as I know.
I can hit F12 on bootup and get the BIOS boot menu. Then I can select Windows.
As it starts to boot, I pound F8. But the computer boots too fast. It gets past the point where F8 does anything before I have time.
On my older non-EFI computer, I don’t have this problem. The difference is that on those boxes, I have setup Windows Boot Manager to be able to boot linux. I’m not currently making use of that setup (I boot linux directly). But the effect is that, on booting Windows, I am presented with the Windows boot manager choices. That gives me a full minute to hit F8.
Unfortunately, EFI based Windows doesn’t seem to have a way of booting linux from the Windows boot manager, so I have not tried this.
I have thought of adding a dummy entry to the Windows boot manager, to boot Windows under a different name – to see if that would give me the time to hit F8. But I haven’t actually tried it, so I’m not sure if that is possible.
I’m not as sure. Note that EFI boot menu entry contains some parameters that Windows bootloader receives when it starts. When the same bootloader is started by GRUB, no parameters are passed. This is different from BIOS case where Windows bootloader is always loaded in the same way.
If someone is willing to test, I’m tempted to write GRUB command that fetches information from EFI menu entry and calls program using the same parameters. This could be useful irrespectively (e.g. many vendors define magic boot menu entries to do legacy boot off HDD/CD, this could enable GRUB on EFI to chainload into legacy BIOS).