Tình hình
Tôi có Bàn phím di động Microsoft Sculpt, được kết nối qua Bluetooth. Trên máy tính xách tay của tôi, một xUb Ubuntu 16.04 đang chạy.
Các F1 đến F12 Các phím của Bàn phím di động Sculpt hoạt động như các phím chức năng Tạm dừng chơi , Tắt tiếng , ... Để sử dụng F1 đến F12 Phím như dự định, người ta cần nhấn Fn Phím, bên phải. Điều này khá khó chịu nếu bạn muốn nhấn ALT + F4 ... Tôi muốn chuyển vĩnh viễn sang Fx các phím (hoặc khóa Fn Chìa khóa). Ngoài ra, tôi muốn chuyển đổi Trang lên và Trang dươi chìa khóa chống lại Nhà và Kết thúc .
Giải pháp Windows
Sử dụng AutoHotKey như được mô tả trong
- Bàn phím di động Microsoft Sculpt Bàn phím Fn đảo ngược và
- "Remap bàn phím di động Microsoft Sculpt" cho AutoHotKey tại GitHub .
Giải pháp không hoạt động
Câu trả lời áp dụng cho bàn phím khác
Giải pháp Linux cho các Bàn phím khác (không hoạt động)
Có thể thay đổi hoặc chuyển đổi các phím bằng các công cụ dòng lệnh xkbcomp
hoặc là setxkbmap
như được mô tả ở đây:
- Superuser: Cách chỉ ánh xạ lại các phím trong Linux cho một bàn phím cụ thể
- AskUbfox: Điều gì trái ngược với setxkbmap -option ctrl: nocaps?
- Stackoverflow: Tạo tùy chọn setxkbmap tùy chỉnh
- Tổng quan về sơ đồ bàn phím xkbcomp tại GitHub
- AskUbfox: CHỈ thay đổi ánh xạ bàn phím cho Bàn phím Bluetooth
- Unix & amp; Linux: Sử dụng setxkbmap để hoán đổi Shift trái và Điều khiển trái
Dựa trên những câu hỏi và câu trả lời này, tôi đã sử dụng xev
để tìm tên khóa (mã định danh XKB) của các khóa được đề cập. Tôi muốn tạo ánh xạ sau:
# F1 to F5 (F5 probably does not work)
I172 -> FK01
MUTE -> FK02
VOL- -> FK03
VOL+ -> FK04
FIND -> FK05
# F11 and F12
FK22 -> FK11
FK23 -> FK12
# switch Page Up and Page Down with Home and End
PGUP -> HOME
HOME -> PGUP
PGDN -> END
END -> PGDN
Vì vậy, tôi đã tạo mã thích hợp:
xkb_symbols "remote" {
key <I172> {
type= "CTRL+ALT",
symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ]
};
key <MUTE> {
type= "CTRL+ALT",
symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ]
};
key <VOL-> {
type= "CTRL+ALT",
symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ]
};
key <VOL+> {
type= "CTRL+ALT",
symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ]
};
key <FIND> {
type= "CTRL+ALT",
symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ]
};
key <FK22> {
type= "CTRL+ALT",
symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ]
};
key <FK23> {
type= "CTRL+ALT",
symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ]
};
key <PGDN> { [ End ] };
key <END> { [ Next ] };
key <PGUP> { [ Home ] };
key <HOME> { [ Prior ] };
};
Và thêm nó vào định nghĩa bản đồ khóa hiện có với xkbcomp
và thêm +custom(remote)
để xkb_symbols
biến của ánh xạ chính của thiết bị tương ứng. Nó không hoạt động.
Tôi nghĩ rằng chúng có thể không hoạt động vì bàn phím được nhận dạng là con trỏ và không phải là bàn phím. Các xinput list
đầu ra nói:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB Mouse id=11 [slave pointer (2)]
⎜ ↳ AlpsPS/2 ALPS DualPoint TouchPad id=14 [slave pointer (2)]
⎜ ↳ AlpsPS/2 ALPS DualPoint Stick id=15 [slave pointer (2)]
⎜ ↳ Microsoft Sculpt Mobile Keyboard id=17 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Power Button id=9 [slave keyboard (3)]
↳ Sleep Button id=10 [slave keyboard (3)]
↳ Laptop_Integrated_Webcam_E4HD id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)]
↳ Dell WMI hotkeys id=16 [slave keyboard (3)]
Giải pháp thay thế (chưa thử)
Tôi đọc về một số con chuột được công nhận là bàn phím và không phải là con trỏ. Sửa đổi mã Linux Kernel + biên dịch lại nó là một trong những giải pháp. Tôi không muốn biên dịch lại Kernel chỉ để bàn phím của tôi hoạt động tốt ....
Giải pháp phần cứng (làm việc)
Câu hỏi
- Giả định của tôi trong "Giải pháp Linux cho các Bàn phím khác" có sai không?
- Nếu câu trả lời cho câu hỏi đầu tiên là Không : Làm cách nào để giải quyết vấn đề được mô tả dựa trên phần mềm (chuyển đổi và thay thế khóa) mà không biên dịch lại Hạt nhân của tôi?
xkbcomp -xkb $DISPLAY my_xkbmap
, sửa đổi thủ công và tải ánh xạ đã sửa đổi bằng xkbcomp (tôi quên lệnh). Ánh xạ khóa mới không hoạt động. Tuy nhiên, trích xuất ánh xạ khóa một lần nữa với xkbcomp
trả lại cho tôi ánh xạ sửa đổi mới (do đó, ánh xạ khóa mới đã được lưu nhưng không hoạt động vì một số lý do). Vì bàn phím của tôi được nhận dạng là con trỏ và không phải là bàn phím, nên tôi nghĩ rằng nó chỉ có thể hoạt động cho bàn phím
evtest
mang lại kết quả tương tự như xev
. Phím chức năng tại 'F1' là 'Phát / Tạm dừng', 'F2' là 'Tắt tiếng', v.v. Các phím chức năng tại 'F5' đến 'F12' kết hợp phím (ví dụ: nhấn 'F10' sẽ tạo ra các sự kiện 'CTRL_L + Windows_L + Tab ') - xev
và evtest
là phù hợp trong trường hợp này.
evtest
trên lớp đầu vào kernel vàxev
trên lớp X cho điều đó và chỉnh sửa câu hỏi cho phù hợp. Sau Điều này được biết, người ta có thể đưa ra ánh xạ khóa chính xác (và bạn cũng có thể tự làm điều này, googling cho hướng dẫn / giải thích) Biên dịch lại kernel không bao giờ cần cho ánh xạ bàn phím.