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-repl

dbus 概念

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

dbus第1张

fcitx 概念

dbus第2张

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=2array [
      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

dbus第3张

dbus第3张

另一个例子

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=2array [
      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:truemethod 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

免责声明:文章转载自《dbus》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇快速抽取Oracle数据到Mongo信息摘要算法之七:SHA在区块链中的应用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue,基于element的tree组件封装

封装组件代码 // 组件:树 /* 参数说明-属性: 1.treeData:展示数据(array) 2.treeEmptyText:内容为空的时候展示的文本(String) 3.treeNodeKey:每个树节点用来作为唯一标识的属性,整棵树应该是唯一的(String) 4.treeRenderAfterExpand:是否在第一次展开某个树节点后才渲染其子...

SpringBoot集成redisson分布式锁

原文链接:https://blog.csdn.net/sinat_25295611/article/details/80420086 https://www.cnblogs.com/yangzhilong/p/7605807.html 业务场景:在电商项目中,往往会有这样的一个功能设计,当用户下单后一段时间没有付款,系统就会在超时后关闭该订单。 通常我们会...

C++ Primer第5版 第四章课后练习答案

练习4.1 105 练习4.2 (a) *(vec.begin())  (b) (*vec.begin()+1) 练习4.3 可以,不过这需要程序员对于编译器优化过程有更深入的了解。 练习4.4 12 / 3 * 4 + 5 * 15 + 24 % 4 / 2;/*结果是91*/12 / 3 * (4 + 5) * 15 + 24 % 4 / 2;/*结果...

java的Excel合并

   项目中有两个不同框架组装成的Excel,现在要对Excel内容合并,组成多sheet的Excel。   主调用方法: public ResponseEntity exportExcel(Long id) { List<PcOrganization> list = partnerOrganizationService.get...

【转】解决:adb 提示adb server version(31) doesn't match this client(41) 解决办法

原文:https://blog.csdn.net/gufenchen/article/details/91383397 一、有时候我们用adb工具去连接安卓设备,或者模拟器的时候,会提示adb server version(31) doesn’t match this client(40)这样的提示。如图 提示的字面意思就是当前client版本40,与s...

关于Delphi中的字符串的浅析(瓢虫大作,里面有内存错误的举例)

关于Delphi中的字符串的浅析 只是浅浅的解析下,让大家可以快速的理解字符串。 其中的所有代码均在Delphi7下测试通过。 Delphi 4,5,6,7中有字符串类型包括了: 短字符串(Short String) 长字符串(Long String) 宽字符串(Wide String) 零结尾字符串(Null-Terminated String)、P...