public void func() { int i = 0; while (true) //infinite loop to listen to keyboard keys and perform actions { i++; Debug.WriteLine("waiting"); //wait for a key to press kbd = Keyboard.Wait(keyboards); Debug.WriteLine("typed" + i); if (kbd == null) { break; } keystroke = kbd.Read(); //read keycode Dispatcher.Invoke((Action) delegate() { id_info.Text = "Id: " + kbd.ID + " pressed: " + keystroke.code; }); //reflect key info on UI if (kbd.ID == kbdid) { //block all strokes of keyboard with matching kbdid and press corresponding joystick keys pressjoy(keystroke); } else { //if it was different keyboard then send this stroke to other programs kbd.Write(keystroke); } } }
public void pressjoy(Keyboard.Stroke keystroke) { // perform actions according to keycode and keystate and joystick button assign to it Boolean down = false; if (keystroke.state == Keyboard.States.MAKE) { down = true; } else if (keystroke.state == Keyboard.States.BREAK) { down = false; } if (keystroke.state == Keyboard.States.E0) { down = true; } else if ((int)keystroke.state == 3) { down = false; } if (down) { if (keystroke.code == jy_down) { joystick1.SetAxis(36000, joyid, HID_USAGES.HID_USAGE_Y); } else if (keystroke.code == jy_up) { joystick1.SetAxis(0, joyid, HID_USAGES.HID_USAGE_Y); } else if (keystroke.code == jx_down) { joystick1.SetAxis(0, joyid, HID_USAGES.HID_USAGE_X); } else if (keystroke.code == jx_up) { joystick1.SetAxis(36000, joyid, HID_USAGES.HID_USAGE_X); } } else { if (keystroke.code == jy_down) { joystick1.SetAxis(18000, joyid, HID_USAGES.HID_USAGE_Y); } else if (keystroke.code == jy_up) { joystick1.SetAxis(18000, joyid, HID_USAGES.HID_USAGE_Y); } else if (keystroke.code == jx_down) { joystick1.SetAxis(18000, joyid, HID_USAGES.HID_USAGE_X); } else if (keystroke.code == jx_up) { joystick1.SetAxis(18000, joyid, HID_USAGES.HID_USAGE_X); } } if (keystroke.code == jbutton_1) { joystick1.SetBtn(down, joyid, 1); } else if (keystroke.code == jbutton_2) { joystick1.SetBtn(down, joyid, 2); } else if (keystroke.code == jbutton_3) { joystick1.SetBtn(down, joyid, 3); } else if (keystroke.code == jbutton_4) { joystick1.SetBtn(down, joyid, 4); } else if (keystroke.code == jbutton_5) { joystick1.SetBtn(down, joyid, 5); } else if (keystroke.code == jbutton_6) { joystick1.SetBtn(down, joyid, 6); } else if (keystroke.code == jbutton_7) { joystick1.SetBtn(down, joyid, 7); } else if (keystroke.code == jbutton_8) { joystick1.SetBtn(down, joyid, 8); } }