自從得知 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
|
2. 點選自訂指令 |
|
3. 輸入程式路徑 |
|
4. 自訂啟動熱鍵 |
|
5. 設定啟動鍵 |
方法二:gnome-keybinding-properties
基於不是每台 Debian 都會裝 Compiz,補上 Gnome 內建的鍵盤捷徑鍵(Keyboard Shortcuts)手動編輯設定檔方法,GUI 無法直接抓取
Caps Lock 事件。
1. 開啟 應用程式選單 → 系統 → 偏好設定 → 鍵盤捷徑鍵(Keyboard Shortcuts)
|
2. 新增 Caps Lock 熱鍵 |
|
3. 命名並指定路徑 |
|
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>
|
6. 修改完會發現 Shortcuts 被 Disabled |
7. 重新啟動 X Windows
jonny@squeeze:~$ sudo /etc/init.d/gdm3 restart [Enter]
|
8. 完成 |
成果展示
|
Caps-Lock ON |
|
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/