Làm thế nào để có bộ scancode bàn phím tùy chỉnh


7

Tôi mới đến lĩnh vực phần cứng nói chung. Đối với một dự án tôi đang cố gắng tạo một bàn phím tùy chỉnh sẽ có thêm một số phím phụ, giả sử nhiều hơn 20-25 so với bàn phím tiêu chuẩn. Tôi đã đọc về mã quét và bộ mã quét. Tôi cũng đã đọc về bộ mã hóa bàn phím, bộ điều khiển, v.v. tại các trang như thế này:

http://retired.beyondlogic.org/keyboard/keybrd.htm

http://www.computer-engineering.org/ps2keyboard

Nhưng tôi vẫn không rõ bộ mã hóa nào sẽ cho phép tôi tạo mã quét tùy chỉnh không được xác định trong bất kỳ bộ mã quét tiêu chuẩn nào. Ngoài ra, bộ điều khiển bàn phím tiêu chuẩn (tương thích 8042) trong PC sẽ xử lý các mã quét không chuẩn này?


Hầu hết các bàn phím là thiết bị USB HID ngày nay vì vậy đây chỉ là trường hợp đưa mã bạn muốn vào báo cáo nhập bàn phím ...
John Burton

Chà, tôi nói "chỉ", nó đòi hỏi khá nhiều kiến ​​thức và phần mềm để làm cho tất cả hoạt động
John Burton

Tôi không thể tìm thấy bất kỳ bài viết hay nào mô tả cách bàn phím USB HID hoạt động, cách chính xác nó giao tiếp với máy chủ / PC, v.v (cách trên 2 trang web mô tả giao thức PS / 2). Nếu bạn biết bất kỳ trang web nào, bạn có thể vui lòng cho tôi URL không?
Vivek

@Vivek: Có lẽ sẽ không có trang web nào chỉ mô tả USB HID, bạn cần hiểu chính USB, trong đó HID là tập hợp con.
davr

Câu trả lời:


5

Atmel (và Microchip cũng vậy, tôi nghĩ) có trình điều khiển HID chung cho MCU của họ có sẵn, với mã nguồn đầy đủ ở mỗi đầu có sẵn (Phần mềm kiểm tra máy khách và ngăn xếp HID nhúng).

Duyệt qua ưu đãi của Atmel, họ thậm chí còn có một bảng demo bàn phím đầy đủ , một lần nữa với mã nguồn.

Đây không phải là ví dụ đơn giản nhất (Họ đã viết lịch trình tác vụ của riêng họ!), Nhưng tôi nghĩ việc sửa đổi để làm những gì bạn muốn là khá dễ dàng.

Nhìn keyboard_task.cvào bản demo bàn phím liên kết ở trên ( hoặc ở đây ). Nó dường như là chính xác những gì bạn muốn. Một mảng lớn các scancodes, được sử dụng để viết tin nhắn vào máy tính bằng cách mô phỏng bàn phím vào bất kỳ trình soạn thảo văn bản nào.

Các giá trị tổ hợp phím HID thực tế được trừu tượng hóa bằng cách sử dụng #define vào một tệp có tên usb_commun_hid.h, dường như không có (!) Trong phần tải xuống ở trên (tôi đoán nó đi kèm với trình biên dịch?), Nhưng chúng chỉ ánh xạ tới các giá trị byte đơn cũ , vì vậy bạn sẽ có thể thêm nhiều hơn tất cả những gì bạn muốn. (Xema00102.html tệp trong liên kết trên.)

Tôi sẽ hình dung Microchip có một cái gì đó tương tự, nhưng tôi không cảm thấy quá giống như đào sâu vào việc thực hiện chúng ngay bây giờ. Nếu bạn muốn, tôi có thể làm như vậy sau.

Tất nhiên, điều này thực sự không làm bất cứ điều gì về cách bạn giải mã các đoạn này ở cuối máy tính, nhưng một lần nữa, Atmel có các ví dụ .Net về cách nói chuyện với các thiết bị HID của họ, vì vậy cần có một cái gì đó có thể hack được.


1

Gần đây tôi đã được giáo dục về câu hỏi này về hai tùy chọn để phát triển USB:

  • Bảng phát triển USB thiếu niên (sử dụng vi điều khiển AVR hỗ trợ USB ATMEGA32U4 hoặc AT90USB1286)
  • Các inputattach tiện ích (Linux) đăng ký thiết bị nối tiếp (như một FT232) như các thiết bị đầu vào

Một trong những điều này sẽ làm việc cho bạn? Dù bằng cách nào, bạn sẽ phải viết trình điều khiển của riêng mình cho nó, bởi vì hệ điều hành của bạn sẽ không thích việc bạn gửi các đoạn mã không chuẩn.

Ưu điểm của việc có các scancodes tiêu chuẩn là mọi bàn phím bạn cắm vào "chỉ hoạt động" (theo lý thuyết). Nếu bạn không quan tâm đến một số cấu hình, tại sao phải cố gắng mô phỏng các scancodes?


0

Nó sẽ hoạt động tốt, đó không phải là cách các bàn phím "Đa phương tiện" hoạt động? Với các phím play / pause / volume / etc trên chúng?


Các phím "Đa phương tiện" là một phần của tiêu chuẩn, IMO. Nếu bạn kiểm tra computer-engineering.org/ps2keyboard/scancodes2.html bạn có thể thấy rằng tất cả các khóa đa phương tiện đều có mã quét cụ thể được gán cho chúng. Và tôi đang nói về cách sử dụng mã quét không chuẩn (những mã không được liên kết với bất kỳ khóa cụ thể nào trong tiêu chuẩn). Theo hiểu biết của tôi, có khoảng 150 mã quét không được sử dụng. (Tiếp tục trong bình luận tiếp theo ...)
Vivek

Ngay cả khi chúng tôi xem xét có khoảng 30 giá trị lẻ được sử dụng làm lệnh, vẫn có khá nhiều mã quét "không xác định". Tôi muốn sử dụng chúng. Nói trong phạm vi 85h - DFh. Chúng ta có thể làm được không?
Vivek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.