2013-02-05 7 views
2

멋진 키보드에서 dbus를 사용하여 키보드 레이아웃 표시기를 업데이트하고 싶습니다. 여기에 내가이 위젯을 업데이트하는 데 사용할 필요 DBUS 서비스 모르겠어요 내 루아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() 

의 일부입니다. 내 멋진 버전 :

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