2013-02-05 39 views
2

我想使用dbus來更新我的鍵盤佈局指標在令人敬畏的WM。這是我在Lua真棒使用dbus的鍵盤佈局指示器

module("keyb")  
function getklayout() 
      local fd = io.popen("skb a") 
      local layout = fd:read() 
      fd:close() 
      return layout 
    end 

FUNC和rc.lua

require("keyb") 
keyinc = widget({type = "textbox"}) 
keyinc.text = keyb.getklayout() 

的一部分,我不知道我需要使用更新這個小工具是什麼DBUS服務。我真棒版本:

awesome -v 
awesome v3.4.9 (Smack) 
• Build: Apr 9 2011 10:40:59 for i686 by gcc version 4.5.1 ([email protected]) 
• D-Bus support: ✔ 

需要一個指教)

回答

1

我之前使用SKB。並使用定時器定期檢查鍵盤狀態。但這並不好。現在我正在使用dbus和kbdd。首先開始kbdd。並添加rc.lua:

--- {{{ keyboard indicator 
mykeyindicator = widget({ type = "imagebox", align = "right" }) 
mykeyindicator.image = image(home_dir .. "/.icons/flags/Eng.png") 

function mykey_update(...) 
    local data = {...} 
    local layout = data[2] 
    lts = { 
      [0] = home_dir .. "/.icons/flags/Eng.png", 
      [1] = home_dir .. "/.icons/flags/Rus.png", 
    } 
    mykeyindicator.image = image(lts[layout]) 
    return 
end 

dbus.request_name("session", "ru.gentoo.kbdd") 
dbus.add_match("session", "interface='ru.gentoo.kbdd',member='layoutChanged'") 
dbus.add_signal("ru.gentoo.kbdd", mykey_update) 

--- keyboard indicator }}} 

Kbdd主頁:https://github.com/qnikst/kbdd