usb 키보드 포팅 관련 질문 있습니다.

fourier의 이미지

입력장치가 없는 개발보드에 usb 키보드를 붙이려고 하는데요.
보드는 리눅스 커널 2.6.18을 사용중이구요.
개발은 우분투가 깔린 컴퓨터에서 보드에 미니컴을 통해서 통신하고 있습니다.
usb 키보드를 사용하기 위해 컴파일 옵션에서 usb 키보드 관련부분들은 전부 추가해주었습니다.

usb를 꼽으면 바로

usb 4-1: new low speed USB device using brcm-ohci-1 and address 4
usb 4-1: configuration #1 chosen from 1 choice
input: HID 0566:3107 as /class/input/input4
input: USB HID v1.10 Keyboard [HID 0566:3107] on usb-ohci-brcm-1
input: HID 0566:3107 as /class/input/input5
input: USB HID v1.10 Device [HID 0566:3107] on usb-ohci-brcm-1

이런식의 메세지가 뜨면서 장치 인식은 잘 하는것 같습니다.
그런데
mknod /dev/input/event0 c 13 64 이런식으로 장치파일을 만들고
cat /proc/input/event0 이렇게 해놓고 키보드로 입력을 하면
화면에는 제가 입력한 값이 아닌 이상한 값들이 출력됩니다.

샘플 프로그램으로 /dev/input/event0 를 open해서 read를 해보면 글자를 한개만 입력해도 32바이트를 읽은것으로 나옵니다.

무엇이 문제일까요?

bushi의 이미지

커널 소스트리에서 Documentation/input/input.txt 파일의 맨 마지막 부분 "5. Event interface" 절을 참고하세요.

OTL

fourier의 이미지

알려주신 문서를 대충 읽어봤는데요.
struct input_event 구조체 형식으로 입력값이 기록된다는 뜻인가요?
그리고 이걸 적절히 해석해서 사용해야 하는건가요?
좀 더 편리하게 입력을 받고 그걸 읽어볼 수는 없을까요?

bushi의 이미지

굉장히 게으르시군요. 매우 긍정적인 자세죠 :)

busybox 를 사용하고 계시다면 showkey 라는 놈이 있는지 찾아보세요.
없다면 http://ftp.altlinux.org/pub/people/legion/kbd/ 에서 다운로드해서 직접 컴파일하시고요.
+
오해하실까봐 추가합니다.
이건 evdev 와는 아무 관계 없이 콘솔에서 키코드를 읽습니다.
키보드가 발생시킨 이벤트를 직접 얻는 것이 아니라 그 이후에 콘솔의 input handler(drivers/char/keyboard.c::kbd_event()) 가 처리한 결과를 얻습니다.

OTL

fourier의 이미지

장치파일 열어서 읽고 쓰지 않고, 일반 pc처럼 기본 입력으로서 쉘에서 키보드를 치면 바로 에코되게 하려면 어떻게 해야 되나요?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.