自從得知 ThinkPad T410 的大寫鍵
Caps Lock 狀態燈離開螢幕下方的 LED 面板的以後,凍仁就一直很依賴右下角的通知(Notification),
不是說新的設計不好,但用久了就會發現它早就被左手的小拇指遮住,哪還看得到什麼 LED ..!? 雖說官方早已幫 Windows 寫好
On-screen display(OSD),而 Mac OSX 上也有
CapSee,至於 Linux 上凍仁有找到
lock-keys-applet,但還是不像官方的直覺。
安裝 notification 相關套件
凍仁是透過 notification-daemon 發送訊息來辨別當前的狀態,在開始之前得先安裝發送自訂訊息的套件。
jonny@squeeze:~$ sudo aptitude install libnotify-bin [Enter]
程式主體
Google 半天才找到可以透過 xset 來查詢 LED 狀態。
jonny@squeeze:~$ xset -q [Enter]Keyboard Control:
auto repeat: on key click percent: 0 LED mask: 00000002
XKB indicators:
00: Caps Lock: off 01: Num Lock: on 02: Scroll Lock: off
03: Compose: off 04: Kana: off 05: Sleep: off
06: Suspend: off 07: Mute: off 08: Misc: off
09: Mail: off 10: Charging: off 11: Shift Lock: off
來加工一下唄!
jonny@squeeze:src$ vi capslock_notification.sh [Enter]
4
5 if [ $( xset q | grep Caps | awk '{ print $4 }' ) = off ]; then
6 STATUS="'Lock keys' 'Caps-Lock has been disabled'";
7 echo "notify-send -t '2000' -i $HOME/.icons/lock-keys/capslock_off.png $STATUS" | bash
8 else
9 STATUS="'Lock keys' 'Caps-Lock has been enabled'";
10 echo "notify-send -t '2000' -i $HOME/.icons/lock-keys/capslock_on.png $STATUS" | bash
11 fi
設定 CapsLock 傾聽
方法一:Compiz
Command Line:
1. 開啟 CompizConfig Settings Manager
jonny@squeeze:~$ ccsm & [Enter]
2. 新增傾聽
Caps Lock 事件。
jonny@squeeze:~$ vi $HOME/.config/compiz/compizconfig/Default.ini [Enter]
......
[commands]
......
as_command1 = /usr/local/bin/capslock.sh
as_run_command1_key = Caps_Lock
圖形化設定:
1. 開啟 應用程式選單 → 系統 → 偏好設定 → CompizConfig Settings Manager
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjByRnzAl8TmU5jZprRb5xqPJtRILBXYS7AmI8y2uM9SVVf3K6VtRU6tx2Uo8ig2zE3-WZ7A2bAWL7crg3zC-3Oc1MTXN265EvJB3hpk0xn3gGv2IVA9Ha1AD5IsfzrDhw5Ss_18GwViJw/s400/capslock_at_ccsm1.png) |
2. 點選自訂指令 |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBrfAymvIULxw5EXrv1x1wed_CDFk3qBlIPA0ECJ9QJY-FNLHq7D0z8DcJ8-vx31c8y6T-PzLZ8hKFmI1vHkESum587ZWd-vGOB8mtEqZ5c1PBH6eLpZ7E3gf0orNmVtXNEyLuCrLKymw/s400/capslock_at_ccsm2.png) |
3. 輸入程式路徑 |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinH_EQsPq4u4z_04llHoY9WfVz1YPRz-ICIJrQkkEyIg4AHm806iYK7TwCi5OxX49_tQxPum6RV_T6eKGiQC4NhPhAPCig8UCBhu1ycERua7Dm2thR3GE68kv4c7sJn0WtiRTqqR9MwJs/s400/capslock_at_ccsm3.png) |
4. 自訂啟動熱鍵 |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8ddjO1qEUUmdlu_tMUwsxzUd4Lliqu1RU3_zEobz5b-Y6XF4_4Od-vxKyqzgpa1AxJWJPyxsjUFmstT_gWU0YglMx5m9WejLAVK3wvS7o3MXZUEcZhSDYJCQtgMAIkcgPRR5Dxo4rwGU/s320/capslock_at_ccsm4.png) |
5. 設定啟動鍵 |
方法二:gnome-keybinding-properties
基於不是每台 Debian 都會裝 Compiz,補上 Gnome 內建的鍵盤捷徑鍵(Keyboard Shortcuts)手動編輯設定檔方法,GUI 無法直接抓取
Caps Lock 事件。
1. 開啟 應用程式選單 → 系統 → 偏好設定 → 鍵盤捷徑鍵(Keyboard Shortcuts)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQm4g59Cw28_O49qV0KQoqzmT1HruNPPAAhwRN3-coOfqhpGC-gdaKAQHRPJYCMttqU3KRxXSYAX2MSAS_Wn0JFzckQlcwfigvJuGpiSP6kIgUI3-Q8E_iLH3JslGcZnlLz3AATjjxsSg/s400/Keyboard+Shortcuts_01.png) |
2. 新增 Caps Lock 熱鍵 |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEgQGZRZt17L7lTVO_VYvffG0li5HRUasnaZKs9QNExACJoLQ5XTixf899D45oj8hkFq2fz7TvqJMZ_6mZHSoyu7vm8f-fRyrnYQYqBjwQ-12ZT5m9rnPx8gX-ZVUAOXT_F9tVnCBbfoU/s1600/Keyboard+Shortcuts_02.png) |
3. 命名並指定路徑 |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYlHISus7din-DfVJGs_8e01XbazilPq1MucGJMXeIB_tusNznSoXL1yG_SIPJSfKluMg_YT3J-unB0a5mAOBkWsHAohZIKhN6b7lozbqMSVLAKa_03qg07mCLkyz7t5KnGTGBcDtU8xI/s400/Keyboard+Shortcuts_03.png) |
4. 隨便自訂事件,事後再修改
|
5. 編輯設定檔
jonny@squeeze:~$ vi $home/.gconf/desktop/gnome/keybindings/custom5/%gconf.xml [Enter]
1 xml version="1.0"
2 <gconf>
3 <entry name="action" mtime="1299259480" type="string">
4 <stringvalue>/home/jonny/bin/capslock-notify</stringvalue>
5 </entry>
6 <entry name="name" mtime="1299259480" type="string">
7 <stringvalue>CapsLock</stringvalue>
8 </entry>
9 <entry name="binding" mtime="1299235446" type="string">
10 <stringvalue><Alt>grave</stringvalue>
10 <stringvalue>Caps_Lock</stringvalue>
11 </entry>
12 </gconf>
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOeeKjdC8fn83_LsQCih4R7kq7yNkcgxeLfRb55XWvCr5QZtd9oVvHAJhIZM7Fp8UFiDpKDhu2OlPuNsn-HXcJuuAgu2HLlpngZu1eYG5aw2TtwCN28ZTTD6KrXu40ZdJFrUUX8fbnDMM/s400/Keyboard+Shortcuts_04.png) |
6. 修改完會發現 Shortcuts 被 Disabled |
7. 重新啟動 X Windows
jonny@squeeze:~$ sudo /etc/init.d/gdm3 restart [Enter]
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidNUrueliXxDyLRwNtFV7QXNZwp2f85Swk1jqw3mGgSYCMrw9GKe2oxDa8RSEkzNhN97ZsSmLSq6lmHQ7Pw-JXIjF2969F-7lOrl9-By9leVjJV8bLtlCJGv8J2gXIvCNa_OMoqBtnt6I/s320/Keyboard+Shortcuts_05.png) |
8. 完成 |
成果展示
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc7iLITu7y8kzciadJ3fOEN4kWOyIuZBRGV9xclhUgRp9jlQJMV1PAn1EG6hPmAO4-ezIOmbLGdiQoxIWWWRWXr-5MQuBvcp3zA31isDwUUeajkKsYJTNbUBd5oUCGftxqwiG2xsdDbKs/s400/capslock-on.png) |
Caps-Lock ON |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_s03_FYpTUzaham4YKEE_KLP_LrzzTkuDAS32dNZh9kN2P3dSgQ2OnFixu1GEDaYayPnri-PAWgwa2imsH2zUD1ra4kE8DgvzmzCbtGh-FUX25ezd-i5JijrLJ2LPjAaEM0_Od0MEa3E/s400/capslock-off.png) |
Caps-Lock OFF |
註:上圖中的通知圖示皆從 Windows 上的 OSD 擷取,
應該不可散佈。
資料來源:
★ hardy.dropblog › Trying to detect the state of the caps-lock key in X
★ 用Nofity OSD通知指令工作執行結束 « WMの物語
★ I am LAZY bones ? : xchat的提醒方式蛮丰富的
★ NotifyOSD | Ubuntu Wiki
這個在 PC上也有用嗎?還是有限 NB 及機型?
回覆刪除您只要先用 xset -q 看看有沒有像凍仁那樣的結果,如果一樣了話就 ok!
回覆刪除有機會在找 PC 測試了,畢竟現在手邊只有小黑 XDD
notify-send 的 -t 參數 (expire time) 不是失效了嗎? -t 2000 有用嗎?
回覆刪除我的 Ubuntu 10.10 跟之前的 10.04 都是沒有用的。
在下在 Debian Squeeze 上可以很明顯的感覺出來有差別,ubuntu 的部份手邊只有 11.04,晚點有空重開再測囉 xd
回覆刪除sleep 2000 ; notify-send -i $HOME/.icons/lock-keys/capslock_off.png "$STATUS"
回覆刪除沒有 -t 就用 sleep
Dear:hepha
回覆刪除-t 指的是訊息 show 的延遲時間,而不是過了幾秒才顯示出來唷!
凍仁會想要即時訊息,但又不希望他 show 太久!
Ubuntu 11.04 現在已經有 indicator-keylock 可以用囉!!
回覆刪除Indicator for Lock Keys : T. Scott Barnes
刪除已成功在 Ubuntu 20.04 & 22.04 上,透過 Lock Keys (GNOME Shell Extensions) 啟用大寫鍵 (Caps Lock) & 數字鍵 (Number Lock) OSD (On-screen Display) 功能。
回覆刪除> Lock Keys | GNOME Shell Extensions - https://extensions.gnome.org/extension/36/lock-keys/