reading from HID keyboard [message #180503] |
Fri, 22 February 2013 17:15 |
Ben Barker
Messages: 5 Registered: October 2011
Karma: 0
|
Junior Member |
|
|
Hi,
I have a device that appears to my machine as a HID keyboard (though actually it is an RFID reader)
I can read from it locally in php by using fopen("php://stdin",r)
The problem is if I shell into this machine via ssh, then stdin comes from the remote keyboard, not from the local HID device, and the above does not return any data.
I can read from /dev/input/by-id/<my device>
But this returns a very large number of bytes that it is not immediately obvious how to decode
Can anyone suggest a way forward here?
|
|
|
Re: reading from HID keyboard [message #180509 is a reply to message #180503] |
Fri, 22 February 2013 20:45 |
Anders Wegge Keller
Messages: 30 Registered: May 2012
Karma: 0
|
Member |
|
|
ben(at)bbarker(dot)co(dot)uk writes:
> Hi,
> I have a device that appears to my machine as a HID keyboard (though actually it is an RFID reader)
>
> I can read from it locally in php by using fopen("php://stdin",r)
>
> The problem is if I shell into this machine via ssh, then stdin comes from the remote keyboard, not from the local HID device, and the above does not return any data.
>
> I can read from /dev/input/by-id/<my device>
>
> But this returns a very large number of bytes that it is not immediately obvious how to decode
>
> Can anyone suggest a way forward here?
It's hard to say without further information, but hazarding a guess,
you are reading raw keyboard scan codes in the latter case. If I was
in your situation, I'd look at the documentation for the device in
question, and take it from there. If your documentation is lacking,
try to look at the table of PS2 scan codes, and see if they match up
with your input.
http://www.computer-engineering.org/ps2keyboard/scancodes2.html
--
/Wegge
Leder efter redundant peering af dk.*,linux.debian.*
|
|
|
Re: reading from HID keyboard [message #180512 is a reply to message #180509] |
Fri, 22 February 2013 22:29 |
Ben Barker
Messages: 5 Registered: October 2011
Karma: 0
|
Junior Member |
|
|
>
>
>
>> Hi,
>
>> I have a device that appears to my machine as a HID keyboard (though actually it is an RFID reader)
>
>>
>
>> I can read from it locally in php by using fopen("php://stdin",r)
>
>>
>
>> The problem is if I shell into this machine via ssh, then stdin comes from the remote keyboard, not from the local HID device, and the above does not return any data.
>
>>
>
>> I can read from /dev/input/by-id/<my device>
>
>>
>
>> But this returns a very large number of bytes that it is not immediately obvious how to decode
>
>>
>
>> Can anyone suggest a way forward here?
>
>
>
> It's hard to say without further information, but hazarding a guess,
>
> you are reading raw keyboard scan codes in the latter case. If I was
>
> in your situation, I'd look at the documentation for the device in
>
> question, and take it from there. If your documentation is lacking,
>
> try to look at the table of PS2 scan codes, and see if they match up
>
> with your input.
>
>
>
> http://www.computer-engineering.org/ps2keyboard/scancodes2.html
>
>
>
> --
>
> /Wegge
>
>
>
> Leder efter redundant peering af dk.*,linux.debian.*
Ah - a useful little program fro the repositories call "evtest" has helped sort things out.
It seems that the data consists of a series of bytes, and for every key press/ character generated there are 8 bytes produced
Event: time 1361571412.662329, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70027
Event: time 1361571412.662343, type 1 (EV_KEY), code 11 (KEY_0), value 1
Interspersed with
Event: time 1361571412.688401, -------------- SYN_REPORT ------------
It should be fairly easy to decode now :-)
|
|
|
Re: reading from HID keyboard [message #180513 is a reply to message #180512] |
Sat, 23 February 2013 00:21 |
Ben Barker
Messages: 5 Registered: October 2011
Karma: 0
|
Junior Member |
|
|
On Friday, 22 February 2013 22:29:01 UTC, b...@bbarker.co.uk wrote:
>>
>
>>
>
>>
>
>>> Hi,
>
>>
>
>>> I have a device that appears to my machine as a HID keyboard (though actually it is an RFID reader)
>
>>
>
>>>
>
>>
>
>>> I can read from it locally in php by using fopen("php://stdin",r)
>
>>
>
>>>
>
>>
>
>>> The problem is if I shell into this machine via ssh, then stdin comes from the remote keyboard, not from the local HID device, and the above does not return any data.
>
>>
>
>>>
>
>>
>
>>> I can read from /dev/input/by-id/<my device>
>
>>
>
>>>
>
>>
>
>>> But this returns a very large number of bytes that it is not immediately obvious how to decode
>
>>
>
>>>
>
>>
>
>>> Can anyone suggest a way forward here?
>
>>
>
>>
>
>>
>
>> It's hard to say without further information, but hazarding a guess,
>
>>
>
>> you are reading raw keyboard scan codes in the latter case. If I was
>
>>
>
>> in your situation, I'd look at the documentation for the device in
>
>>
>
>> question, and take it from there. If your documentation is lacking,
>
>>
>
>> try to look at the table of PS2 scan codes, and see if they match up
>
>>
>
>> with your input.
>
>>
>
>>
>
>>
>
>> http://www.computer-engineering.org/ps2keyboard/scancodes2.html
>
>>
>
>>
>
>>
>
>> --
>
>>
>
>> /Wegge
>
>>
>
>>
>
>>
>
>> Leder efter redundant peering af dk.*,linux.debian.*
>
>
>
> Ah - a useful little program fro the repositories call "evtest" has helped sort things out.
>
>
>
> It seems that the data consists of a series of bytes, and for every key press/ character generated there are 8 bytes produced
>
>
>
> Event: time 1361571412.662329, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70027
>
> Event: time 1361571412.662343, type 1 (EV_KEY), code 11 (KEY_0), value 1
>
>
>
> Interspersed with
>
>
>
> Event: time 1361571412.688401, -------------- SYN_REPORT ------------
>
>
>
> It should be fairly easy to decode now :-)
This was also of much use:
http://stackoverflow.com/questions/5060710/format-of-dev-input-event
|
|
|