Khi tôi quét mã vạch trong bảng điều khiển văn bản (CTRL + ALT + F1 hoặc không chạy X), tôi nhận được đầu vào chính xác, nhưng khi tôi thử với một ứng dụng chạy trên X, tôi không nhận được mã vạch chính xác.
Máy quét được định cấu hình để trả về mã vạch theo sau là 'n'. Dưới XI chỉ nhận được 'n', không phải mã vạch trước.
Tôi chạy xev để xem những gì đang xảy ra. Đây là một đoạn trích của đầu ra:
> KeyPress event, serial 35, synthetic NO, window 0x6800001,
> state 0x10, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
> KeyRelease event, serial 35, synthetic NO, window 0x6800001,
> state 0x18, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
> KeyPress event, serial 35, synthetic NO, window 0x6800001,
> state 0x10, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
> KeyRelease event, serial 35, synthetic NO, window 0x6800001,
> state 0x18, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
Có một cặp sự kiện KeyPress / KeyRelease cho mỗi chữ số trong mã vạch, nhưng không có sự kiện nào xảy ra giữa sự kiện KeyPress và KeyRelease cho Alt_L?
Tôi nên xem các phím soạn thảo cho một giải pháp, hoặc làm thế nào tôi có thể khớp với hành vi của một bàn điều khiển bình thường?
ps. Tôi đang sử dụng máy quét mã vạch Welch Allyn ST3400.
BIÊN TẬP:
Tôi chạy showkey trên dòng lệnh và quét mã vạch. Đây là đầu ra tôi nhận được:
keycode 28 release
keycode 56 press
keycode 82 press
keycode 76 press
keycode 80 press
keycode 56 release
keycode 56 press
keycode 82 press
keycode 75 press
keycode 73 press
keycode 56 release
Có vẻ như máy quét mã vạch đang sử dụng Left-Alt + # + # + # để có được các ký tự chính xác. Có vẻ như máy quét mã vạch không bao giờ gửi một sự kiện phát hành cho các phím numpad mà nó sử dụng cùng với Left-Alt? Tôi đọc một cái gì đó tương tự trên một diễn đàn khác - mặc dù không có giải pháp. Nếu tôi sử dụng thủ công Left-Alt + # + # + # với showkey, tôi sẽ nhấn và nhả cho từng phím.
Câu hỏi bây giờ trở thành, tại sao không có sự kiện KeyPress khi tôi đang chạy Xorg?