// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-#if !NET_2_1
+#if !MOBILE
using System.Runtime.InteropServices;
using System.Text;
namespace System {
return false;
//KEY_EVENT == 1
- if (record.EventType == 1 && record.KeyDown)
+ if (record.EventType == 1 && record.KeyDown && !IsModifierKey (record.VirtualKeyCode))
return true;
if (!ReadConsoleInput (inputHandle, out record, 1, out eventsRead))
public bool TreatControlCAsInput {
get {
int mode;
- if (!GetConsoleMode (outputHandle, out mode))
+ if (!GetConsoleMode (inputHandle, out mode))
throw new Exception ("Failed in GetConsoleMode: " + Marshal.GetLastWin32Error ());
// ENABLE_PROCESSED_INPUT
set {
int mode;
- if (!GetConsoleMode (outputHandle, out mode))
+ if (!GetConsoleMode (inputHandle, out mode))
throw new Exception ("Failed in GetConsoleMode: " + Marshal.GetLastWin32Error ());
bool cAsInput = ((mode & 1) == 0);
if (value)
mode &= ~1;
else
- mode++;
+ mode |= 1;
- if (!SetConsoleMode (outputHandle, mode))
+ if (!SetConsoleMode (inputHandle, mode))
throw new Exception ("Failed in SetConsoleMode: " + Marshal.GetLastWin32Error ());
}
}
throw new ArgumentOutOfRangeException ("left/top", "Windows error " + Marshal.GetLastWin32Error ());
}
- private bool IsModifierKey(short virtualKeyCode)
+ static bool IsModifierKey (short virtualKeyCode)
{
// 0x10 through 0x14 is shift/control/alt/pause/capslock
// 0x2C is print screen, 0x90 is numlock, 0x91 is scroll lock
case 0x10:
case 0x11:
case 0x12:
- case 0x13:
case 0x14:
- return true;
- case 0x2C:
case 0x90:
case 0x91:
return true;