看板 FreeBSD 關於我們 聯絡資訊
(重貼一次,在 google 上貼的似乎不見了 @@) 現在的硬體廠商幾乎都是綁著 Windows出售筆記型電腦,出廠的時候通常都會有一些方 便的快速鍵(如調整螢幕亮度、音量等),按下去的同時也多半會有osd(on screen display)提示顯示在螢幕上,方便使用者知悉目前按鍵狀況,比如說 IBM Thinkpad 都 會有一些音量大小按鍵(如 X, T series),或是有 home/mail/search/favorites 等快 速鍵(如 A, S, I series),可惜的是這些都是由軟體控制,因此有些可能有可能會被 FreeBSD支援,有些可能就沒有支援。自 FreeBSD-5 之後,acpi(4)已有顯著的改進, 自freebsd-5.4 以後 cpufreq 架構出來,進而有了 powerd(8) 等電源控制的工具開發 出來,搭配這些,在筆記型電腦上使用 FreeBSD 比起以前更便利。不過這篇文章我把 重點放在 thinkpad osd 上面。 提到 Thinkpad OSD 之前,我們來看一些歷史,acpi_ibm(4): ACPI extra drivers 最初是由渡邊尊紀(Takanori Watanabe)所撰寫,後來大部份的code再由 Markus Brueffer 重新撰寫(*1),2005/05/31 由 Brueffer 在 freebsd-acpi mailing list 中徵求測試,而 acpi_ibm(4) 改進的特點有: (1) 重新在 sysctl tree 中定位 hw.acpi.ibm,並且重新命名部份的 sysctls(目前的sysctls 為 dev.acpi_ibm) (2) 支援更多熱鍵 (音量, Fn+Home/End: 調整螢幕亮度, Fn+PgUP: LED, Access IBM 鍵) (3) 增加 acpi events 支援 (4) 可以改變音量、靜音、螢幕亮度、還有 thinkpad led light(其他部份 sysctls 為唯讀) (5) 支援讀取風扇狀態及速度(但是不能更動 sysctls) (6) 支援最多8個溫度感測器 prerequisite: FreeBSD 6.0以上或 current I. 安裝設定 1. 首先載入acpi_ibm.ko,或是直接寫入核心設定檔中: device acpi_ibm 如果要使用動態核心模組的話,請使用 #kldload acpi_ibm.ko 或是寫入 /boot/loader.conf 加入 acpi_ibm_load="YES" 載入之後 dmesg 會出現 acpi_ibm0: <IBM ThinkPad ACPI Extras> on acpi0 2. 從 ports 安裝 deskutils/tpb 怎麼從 ports 安裝,請看 handbook http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports-using.html 3. 設定 .tpbrc % cp /usr/local/etc/tpbrc.default ~/.tpbrc % vi ~/.tpbrc 我的設定為(有更動過的,其餘為預設): # THINKPAD 鍵,我設定為開啟出 aterm THINKPAD /usr/local/bin/aterm -title console # Fn 鍵,因為在我的 X31 上面, Fn+F3 仍然無作用,因此我自行設定 # 按下 Fn 強制將螢幕關閉(在 X 底下) fn /usr/X11R6/bin/xset dpms force off # 顯示字型,可以用 xfontsel 自行選擇 OSDFONT -*-terminal-*-*-*-*-*-*-*-*-*-*-*-* # 顯示的顏色,你可以從 ports 安裝 xcolors 去選擇顏色名稱 OSDCOLOR Green # osd position 顯示的位置 OSDPOS MIDDLE # 對齊方向 OSDALIGN CENTER (請自行依照需求設定,參考 tpbrc.default 裡頭的說明) II. acpi_ibm.ko 接下來我們實際來測試看看(以 IBM Thinkpad X31為例,”/* */” 內為我的註解) # sysctl -a | grep ibm dev.acpi_ibm.0.%desc: IBM ThinkPad ACPI Extras /*以下表示在這個 sysctl 所使用的是 acpi_ibm(4) 的驅動程式*/ dev.acpi_ibm.0.%driver: acpi_ibm dev.acpi_ibm.0.%location: handle=\_SB_.PCI0.LPC_.EC__.HKEY /* plug and play information*/ dev.acpi_ibm.0.%pnpinfo: _HID=IBM0068 _UID=0 dev.acpi_ibm.0.%parent: acpi0 dev.acpi_ibm.0.initialmask: 2060 /* 目前有的 mask ,請 man acpi_ibm(4)*/ dev.acpi_ibm.0.availmask: 2524 dev.acpi_ibm.0.events: 0 dev.acpi_ibm.0.eventmask: 2060 /* 熱鍵,這個 sysctl 也是唯讀的 */ dev.acpi_ibm.0.hotkey: 2448 /* LCD 螢幕亮度,可調整,共有 8 個階段可調整:0, 14, 28, 42, 57, 71, 85, 100% */ dev.acpi_ibm.0.lcd_brightness: 4 /* 音量控制,具有15個階段可以調整,0, 7, 14, 21, 28, 35, 42, 50, 57, 64, 71, 78, 85, 92, 100% */ dev.acpi_ibm.0.volume: 9 /* 靜音 */ dev.acpi_ibm.0.mute: 0 /* 螢幕上方的 LED 小燈 */ dev.acpi_ibm.0.thinklight: 0 /* 藍芽模組,我這臺沒有藍芽 */ dev.acpi_ibm.0.bluetooth: 0 /* 無線網路模組 */ dev.acpi_ibm.0.wlan: 1 /* 散熱風扇速度,0 是關掉,最大是7,唯讀的 sysctl */ dev.acpi_ibm.0.fan_speed: 0 /* 風扇狀態,為有或無,這邊並不是表示風扇的開或關,請注意*/ dev.acpi_ibm.0.fan: 1 /* 內建的溫度感測器,最多支援 8 個感測器,分別為 cpu,mini pci 模組,硬碟,顯示晶片(GPU),內建電池,ultrabay 電池, 內建電池,ultrabay 電池的溫度,單位是攝氏。 */ dev.acpi_ibm.0.thermal: 52 -1 61 47 38 -1 34 -1 使用: /usr/local/bin/tpb for example: tpb --osd=on --verbose 有圖有真相: http://psilotum.twbbs.org/images/tpb.png
註記: 在 thinkpad 部份機種鍵盤上方向鍵旁邊有兩個鍵,在原本設計中,為瀏覽網頁能看前一頁及後一頁,但只侷限於 IBM PRELOAD_OS,如果要啟用,可以在 X 啟動後,使用 xmodmap(1)修改,或者你也可以改成你想要的快速鍵。以下範例為 page up / page down xmodmap -e "keycode 233 = Page_Down" xmodmap -e "keycode 234 = Page_Up" Reference: 1) Markus 於 May 31, 2005 在 freebsd-acpi/mobile mailing-list 所發佈的信及其討論串 http://lists.freebsd.org/pipermail/freebsd-acpi/2005-May/001567.html http://lists.freebsd.org/pipermail/freebsd-acpi/2005-June/001608.html -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.101.250 ※ 編輯: psilotum 來自: 140.112.101.250 (10/01 17:35)