Keys列挙体はWindowsのVirtual Key, VKをそのまま転写したものです。 https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getkeyboardstate そして、ctrlキーのL/Rを区別するVK_LCONTROL/VK_RCONTROLは、 > These left- and right-distinguishing constants are available to an application only through the GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState, and MapVirtualKey functions. とあるように、非常に限定されたAPIでのみ有効な値になっています。 Control.KeyDownイベントはWM_KEYDOWNメッセージのラッパであり、ここでは単純にWM_KEYDOWNのWPARAMをKeysとして扱ってるだけなので、Windows/WinFormとしては、KeyDownイベントのKeyEventArgs.KeyDataでL/Rの区別はつけていないというのが仕様と考えられます。