zoukankan      html  css  js  c++  java
  • dbus

    dbus 概念

    --翻遍了google和百度,就这个图对入门帮助最大,dbus的文档真难找

    fcitx 概念

    dbus-send  命令行

    /inputmethod --对象路径
    org.freedesktop.DBus.Properties --interface
    --dest=org.fcitx.Fcitx    //名称
    
    
     dbus-send --session --dest=org.fcitx.Fcitx --print-reply /inputmethod  org.freedesktop.DBus.Properties.GetAll string:org.fcitx.Fcitx.InputMethod
    method return time=1589505703.719201 sender=:1.4 -> destination=:1.76 serial=218 reply_serial=2
       array [
          dict entry(
             string "IMList"
             variant             array [
                   struct {
                      string "键盘"
                      string "fcitx-keyboard-us"
                      string "en"
                      boolean true
                   }
                   struct {
                      string "拼音"
                      string "pinyin"
                      string "zh_CN"
                      boolean true
                   }
                   struct {
                      string "双拼"
                      string "shuangpin"
                      string "zh_CN"
                      boolean true
                   }
                   struct {
                      string "五笔字型"
                      string "wubi"
                      string "zh_CN"
                      boolean true
                   }
                   struct {
                      string "新酷音"
                      string "chewing"
                      string "zh_TW"
                      boolean true
                   }
                   struct {
                      string "中州韻"
                      string "rime"
                      string "zh_TW"
                      boolean true
                   }
                   struct {
                      string "讯飞输入法"
                      string "iflyime"
                      string "zh_CN"
                      boolean false
                   }
                   struct {
                      string "五笔拼音"
                      string "wbpy"
                      string "zh_CN"
                      boolean false
                   }
                ]
          )
          dict entry(
             string "CurrentIM"
             variant             string "fcitx-keyboard-us"
          )
       ]

    #获取当前的输入法

    uos@uos-PC:~$ dbus-send --session --dest=org.fcitx.Fcitx --print-reply /inputmethod org.fcitx.Fcitx.InputMethod.GetCurrentIM
    method return time=1589506396.672512 sender=:1.4 -> destination=:1.81 serial=299 reply_serial=2
    string "fcitx-keyboard-us

    #设置为chewin 输入法

    uos@uos-PC:~$ dbus-send --session --dest=org.fcitx.Fcitx --print-reply /inputmethod org.fcitx.Fcitx.InputMethod.SetCurrentIM string:chewing
    method return time=1589506465.397429 sender=:1.4 -> destination=:1.82 serial=317 reply_serial=2
    uos@uos-PC:~$

    #gdbus 用法

    gdbus call --session --dest com.deepin.daemon.Keybinding --object-path /com/deepin/daemon/Keybinding --method com.deepin.daemon.Keybinding.ListAllShortcuts

    cmd ==>  dbus-send --session --dest=org.fcitx.Fcitx --print-reply /inputmethod  org.freedesktop.DBus.Properties.GetAll string:org.fcitx.Fcitx.InputMethod

     

    另一个例子

    uos@uos-PC:~/tmp$ dbus-send --session --dest=com.deepin.daemon.InputDevices --print-reply /com/deepin/daemon/InputDevice/Mouse  org.freedesktop.DBus.Properties.GetAll string:com.deepin.daemon.InputDevice.Mouse
    method return time=1612511729.341407 sender=:1.177 -> destination=:1.297 serial=55919 reply_serial=2
       array [
          dict entry(
             string "MotionAcceleration"
             variant             double 1
          )
          dict entry(
             string "MotionScaling"
             variant             double 10
          )
          dict entry(
             string "DoubleClick"
             variant             int32 400
          )
          dict entry(
             string "DisableTpad"
             variant             boolean false
          )
          dict entry(
             string "NaturalScroll"
             variant             boolean false
          )
          dict entry(
             string "AdaptiveAccelProfile"
             variant             boolean true
          )
          dict entry(
             string "Exist"
             variant             boolean true
          )
          dict entry(
             string "LeftHanded"
             variant             boolean true
          )
          dict entry(
             string "MiddleButtonEmulation"
             variant             boolean false
          )
          dict entry(
             string "DragThreshold"
             variant             int32 8
          )
          dict entry(
             string "MotionThreshold"
             variant             double 1
          )
          dict entry(
             string "DeviceList"
             variant             string "[{"Id":7,"Name":"VMware VMware Virtual USB Mouse","TrackPoint":false},{"Id":9,"Name":"VirtualPS/2 VMware VMMouse","TrackPoint":false}]"
          )
       ]

     设置鼠标左键

    uos@uos-PC:~/tmp$ dbus-send --session --dest=com.deepin.daemon.InputDevices --print-reply /com/deepin/daemon/InputDevice/Mouse  org.freedesktop.DBus.Properties.Set string:com.deepin.daemon.InputDevice.Mouse  string:LeftHanded variant:boolean:true
    method return time=1612513318.004456 sender=:1.177 -> destination=:1.311 serial=63883 reply_serial=2

    python version

    import dbus
    bus = dbus.SystemBus()
    hci0 = bus.get_object('org.bluez', '/org/bluez/hci0')
    props = dbus.Interface(hci0, 'org.freedesktop.DBus.Properties')
    props.Set('org.bluez.Adapter1', 'Discoverable', True)
    

    dbus signal的处理方法

    demo代码参考

    https://github.com/sgh/dbus-examples

    命令行

    signal time=1622515858.073001 sender=:1.719 -> destination=(null destination) serial=77 path=/com/burtonini/dbus/ping; interface=com.burtonini.dbus.Signal; member=Ping
    string "Ping!"

    dbus-send --type=signal  /com/burtonini/dbus/ping com.burtonini.dbus.Signal.Ping string:"Ping"

    dbus-monitor | grep -e EntryAdd -e EntryRemove

  • 相关阅读:
    Codeforces Round #652 (Div. 2)
    Codeforces Round #651 (Div. 2)
    The 2017 China Collegiate Programming Contest, Qinhuangdao Site
    2017中国大学生程序设计竞赛-哈尔滨站
    Codeforces Global Round 8
    [CF768D] Jon and Orbs
    2020牛客暑期多校训练营(第一场)I
    2020牛客暑期多校训练营(第一场)F
    [HDU5769] Substring
    [PA2010] Riddle
  • 原文地址:https://www.cnblogs.com/eiguleo/p/12893033.html
Copyright © 2011-2022 走看看