# How to use laptop keyboard as input

**URL:** <https://mworks.discourse.group/t/how-to-use-laptop-keyboard-as-input/421>\
**Category:** Support\
**Created:** [March 21, 2017, 9:22pm UTC](https://mworks.discourse.group/t/how-to-use-laptop-keyboard-as-input/421 "2017-03-21T21:22:52Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [March 21, 2017, 9:22pm UTC](https://mworks.discourse.group/t/how-to-use-laptop-keyboard-as-input/421/1 "2017-03-21T21:22:52Z")

</div>

Hi there,

I’m interested in prototyping a protocol on humans before running it with animals and being able to run it on a laptop where the subject can respond with the keyboard would be very helpful. I read something about a “USB HID” device but I’m not exactly sure how to set this up.

Thank you!

Javier

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [March 22, 2017, 2:45pm UTC](https://mworks.discourse.group/t/how-to-use-laptop-keyboard-as-input/421/2 "2017-03-22T14:45:55Z")

</div>

Hi Javier,

Yes, a [USB HID device](https://mworks.github.io/documentation/0.7/components/usb_hid_device.html) is what you need. I’ve attached a simple example experiment that reports the state of the spacebar.

The only trick with USB HID devices is figuring out the correct usage page and usage values for the input you want to monitor. With a keyboard, the easiest way to do it is to set the device’s `log_all_input_values` parameter to `YES`, press and release the desired key, and then check the output in MWServer’s console window. In my tests, every key press or release generates four HID input values. You want the usage-page/usage pair whose value goes to 1 when the key is pressed and changes to 0 when it’s released.

For example, pressing and releasing the “A” key generates the following output in the server console:

```
00:09:21: HID input on device "keyboard":
    Usage page: 7 (0x07)
    Usage: 4294967295 (0xFFFFFFFF)
    Value: 4
00:09:21: HID input on device "keyboard":
    Usage page: 7 (0x07)
    Usage: 1 (0x01)
    Value: 0
00:09:21: HID input on device "keyboard":
    Usage page: 7 (0x07)
    Usage: 4 (0x04)
    Value: 1
00:09:21: HID input on device "keyboard":
    Usage page: 7 (0x07)
    Usage: 4294967295 (0xFFFFFFFF)
    Value: 4
00:09:22: HID input on device "keyboard":
    Usage page: 7 (0x07)
    Usage: 4294967295 (0xFFFFFFFF)
    Value: 0
00:09:22: HID input on device "keyboard":
    Usage page: 7 (0x07)
    Usage: 1 (0x01)
    Value: 0
00:09:22: HID input on device "keyboard":
    Usage page: 7 (0x07)
    Usage: 4 (0x04)
    Value: 0
00:09:22: HID input on device "keyboard":
    Usage page: 7 (0x07)
    Usage: 4294967295 (0xFFFFFFFF)
    Value: 0

```

In this case, usage page 7, usage 4 has a value that’s first 1 and then 0, so that’s the pair you need.

If you need further assistance, please let me know.

Chris Stawarz

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [March 22, 2017, 2:45pm UTC](https://mworks.discourse.group/t/how-to-use-laptop-keyboard-as-input/421/3 "2017-03-22T14:45:55Z")

</div>

Attachment: [keyboard\_example.xml](https://mworks.discourse.group/uploads/short-url/qM7JVCcVNoVKnDWKiNh4lIlHUbC.xml) (2.42 KB)

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [March 24, 2017, 7:34pm UTC](https://mworks.discourse.group/t/how-to-use-laptop-keyboard-as-input/421/4 "2017-03-24T19:34:04Z")

</div>

Hey Chris,

Thanks for the reply. I will look into this and get back to you!

Best,

Javier

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [July 19, 2022, 9:59pm UTC](https://mworks.discourse.group/t/how-to-use-laptop-keyboard-as-input/421/5 "2022-07-19T21:59:37Z")

</div>


