如何只更換特定鍵盤的 Ctrl 和 Caps Lock 鍵位? on Ubuntu 16.04
四年前,凍仁找到了對調 Ctrl 和 Caps Lock 的方法,並紀錄於「對調 Ctrl 和 Caps Lock 鍵位」一文,但使用 setxkbmap 指令操作時,會連外接不需更換鍵位的 HHKB Pro 2 也一併生效,害得凍仁每次都得重新插拔 USB 線來排除此問題;而現在我們只需透過 -device 參數即可對特定鍵盤進行操作。
1. 使用 xinput 列出所有鍵盤輸入裝置,此為 ThinkPad T410 外接 HHKB Pro 2 之結果。
▲ ThinkPad T410 內建鍵盤的裝置名稱為 AT Translated Set 2 keyboard,而外接的 HHKB Pro 2 則是 Topre Corporation HHKB Professional。
2. 藉由 setxkbmap 指令搭配裝置代號 (id) 使用 即可對特定特定鍵盤進行操作。
3. 最後凍仁寫了個簡易的 Shell Script,並讓它在登入時自動執行。
現在我們再也不用重新插拔 USB 線了,Happy hacking our keyboard !
1. 使用 xinput 列出所有鍵盤輸入裝置,此為 ThinkPad T410 外接 HHKB Pro 2 之結果。
[ jonny@xenial ~ ] $ xinput -list | grep -i key [Enter] ⎣ 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)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ Integrated Camera id=12 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)] ↳ ThinkPad Extra Buttons id=16 [slave keyboard (3)] ↳ ACPI Virtual Keyboard Device id=17 [slave keyboard (3)] ↳ Topre Corporation HHKB Professional id=9 [slave keyboard (3)]
2. 藉由 setxkbmap 指令搭配裝置代號 (id) 使用 即可對特定特定鍵盤進行操作。
[ jonny@xenial ~ ]
$ /usr/bin/setxkbmap -option "ctrl:swapcaps" -device 13 [Enter]
# 此例中,裝置代號 13 指的是 ThinkPad T410 的內建鍵盤,請依自行需求進行更改。
3. 最後凍仁寫了個簡易的 Shell Script,並讓它在登入時自動執行。
[ jonny@xenial ~ ]▲ Reference: hacking-ubuntu.ansible / files / switch-capslock-and-ctrl.sh
$ vi switch-capslock-and-ctrl.sh [Enter]
#!/bin/bash # Find the build in thinkpad keyboard device id. BUILDIN_KEYBOARD_ID=$(xinput list | grep 'AT Translated Set 2 keyboard' | awk '{ print $7 }' | sed 's/id=//') HHKB_COUNT=`lsusb | grep "Topre Corporation HHKB Professional" | wc -l` if [ $HHKB_COUNT -ne "1" ]; then /usr/bin/setxkbmap -option "ctrl:swapcaps" else # Only switch the Caps Lock and Left Ctrl layout at ThinkPad T410. /usr/bin/setxkbmap -option "ctrl:swapcaps" -device $BUILDIN_KEYBOARD_ID fi
現在我們再也不用重新插拔 USB 線了,Happy hacking our keyboard !
站內連結:
★ 對調 Ctrl 和 Caps Lock 鍵位
資料來源:
★ linux - Two keyboards on one computer. When I write with A I want a US keyboard layout, when I use B I want Swedish. Possible? | Super User
留言
張貼留言
喜歡這篇文章嗎?歡迎在底下留言讓凍仁知道。😉