Nhân Linux bỏ mã quét bàn phím tùy chỉnh


16

Tôi có một bàn phím M kiểu mẫu 122 cổ điển mà tôi đang điều chỉnh để sử dụng trên một máy tính hiện đại. Tôi đang sử dụng Teensy 2.0 để thực hiện mã hóa và xử lý phần USB. Tôi đã mượn phần sụn từ dự án bàn phím Humble Hacker ( https://github.com/humblehacker/keyboard ) và tôi đã thêm các phím phụ trong cấu hình bản dựng. Càng xa càng tốt.

Tất cả các phím "thông thường" đều hoạt động, nhưng kernel dường như đang bỏ các phím phụ ( F13- F24, v.v.).

Chạy /lib/udev/keymap -i input/event0hiển thị mã quét của tất cả các phím thông thường, nhưng không có gì cho các phím phụ.

Chạy wiresharkđến gói chụp cổng USB cho thấy bàn phím IS đang gửi mã quét, nhưng có vẻ như hạt nhân chỉ bỏ chúng theo nguyên tắc.

Tôi cảm thấy như đây là một cái gì đó trong trình điều khiển hạt nhân đơn giản là không cung cấp mã quét mà nó không mong đợi.

Tôi nghĩ rằng sẽ có một loại bản đồ khóa "chính" trong một số .htệp trong nguồn kernel ở đâu đó, nhưng cho đến nay, tôi đã không thành công trong nỗ lực tìm kiếm nó.

Điều đáng nhấn mạnh là tôi không hỏi về việc ánh xạ các phím phụ trong X, giống như nhiều người khác trước tôi. Đây là một mức độ thấp, rõ ràng liên quan đến hạt nhân, vấn đề. Giả sử hiện tại tôi sẽ không sử dụng X chút nào. Những gì tôi cần là cho các mã quét hiển thị khi tôi chạy /lib/udev/keymap -i, tôi có thể làm phần còn lại từ đó.


Tôi biết điều này không có ích nhưng: Tại sao bạn sử dụng Teensy? Bàn phím đó sẽ hoạt động với bộ chuyển đổi PS2 / USB thẳng.
goldilocks

Bàn phím đến từ một thiết bị đầu cuối cũ của IBM, nó không sử dụng giao thức tương thích PS / 2.
dùng2543941

Ồ Nó thực sự có thể là người lái xe không vượt qua sự kiện trên (hãy xem phần cuối cùng ở đây ). Bạn có thể thử evtestthay vì /lib/udev/keymap -i, dunno nếu điều đó sẽ khác đi.
goldilocks

1
evtest cũng không hiển thị gì khi các phím phụ được sử dụng.
dùng2543941

1
Có vẻ như nếu bạn muốn sử dụng các khóa đó, dự án của bạn sẽ lớn hơn một chút, lol. Điều khó nhất khi viết trình điều khiển bàn phím sẽ là học API, nếu không, chúng trông không phức tạp lắm. Tôi đã không thực hiện bất kỳ công cụ kernel nào trong một thời gian, nhưng điều này: LDD3 vẫn còn hiệu lực cho 3.x, tôi nghĩ vậy.
goldilocks

Câu trả lời:


1

Nhân nhìn thấy các mã quét kỳ lạ và thả chúng xuống. Tôi sẽ cố gắng để có được các giá trị mã quét và sau đó cập nhật chỉ mục cơ sở dữ liệu phần cứng. Vì vậy, trong ngắn hạn kế hoạch là thế này:

  • lấy mã từ đầu ra dmesg - dmesg sẽ xuất ra một cái gì đó như thế này khi nhấn mã khóa không xác định:

    Unknown key pressed (translated set 2, code 0xa0 on isa0060/serio0)
    

a0 là giá trị mã.

  • tạo tập tin ánh xạ mã khóa tùy chỉnh. Các ví dụ và trợ giúp nằm trong tệp mặc định
    ( /usr/lib/udev/hwdb.d/60-keyboard.hwdbđối với Arch, nó có thể khác trong các bản phân phối khác).

  • cập nhật và kích hoạt cơ sở dữ liệu phần cứng bằng cách chạy các lệnh:

    > udevadm hwdb --update
    > udevadm trigger /dev/input/eventXX
    

nơi eventXXtương ứng với bàn phím của bạn (bạn có thể lấy nó bằng cách chạy evtest). Bạn cũng có thể khởi động lại thay vì kích hoạt.

Xem trong Arch wiki và tệp ánh xạ mã khóa mặc định để biết mô tả chi tiết hơn (hoặc trong tài liệu phân phối của bạn nếu không phải là Arch).

Đây là phương pháp đơn giản và đáng tin cậy, giúp ánh xạ ở cấp kernel nên hoạt động bất kể máy chủ hiển thị, DE, v.v.


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.