Logitech Options 是罗技办公鼠标的自定义功能驱动,但是只提供了Windows和Mac版本。在Linux环境下进行鼠标按键的配置可以使用第三方驱动项目:logiops项目地址
参考官网教程https://github.com/PixlOne/logiops#readme
项目需要c++ 14 编译器,需要安装 cmake,libevdev,libudev,libconfig。
ubuntu安装依赖:
sudo apt install cmake libevdev-dev libudev-dev libconfig++-dev
git clone https://github.com/PixlOne/logiops.git
cd logiops
mkdir build
cd build
cmake ..
make
sudo make install
sudo systemctl enable --now logid
安装完成后,即可使用命令logid完成相应操作
-h:查看命令帮助
-v:查看运行信息(debug/info/warn/error)
-V:查看版本
-c [file path]:更改配置文件地址为[file path]
出现[ERROR] Could not create input device: Permission denied,提示权限不足,使用sudo运行即可。
查看运行状态
sudo service logid status
重启logiops服务
sudo service logid restart
配置文件默认地址为/etc/logid.cfg,需要自己手动添加
sudo touch /etc/logid.cfg
然后打开这个配置文件,参考例程:logid.example.cfg
详细的配置说明:Configuration
我用的是M590无线鼠标,修改name为M585/M590 Multi-Device Mouse,部分确认支持的设备名称参考:logiops/TEST.md
Action类型为Keypress
首先找到鼠标对应按键的cid,可以查看官方wiki:CIDs
M590的几个cid:前后侧键0x56,0x53,中键0x52;
按键输入对应:input-event-codes.h
我的侧键设置:
{
cid: 0x56;
action =
{
type: "Keypress";
keys: ["KEY_LEFTCTRL", "KEY_Z"]; # 前侧键用于撤销
};
},
{
cid: 0x53;
action =
{
type: "Keypress";
keys: ["KEY_DELETE"]; #后侧键delete
};
}
Action类型为gestures,分为五个子动作:Up, Down, Left, Right, None,其中上下左右分别对应按键之后向对应方向移动鼠标的动作,None对应按下按键以后不动的动作。
我设置了滚轮键(中键)的gestures:
{
cid: 0x52; #中键
action =
{
type: "Gestures";
gestures: (
{
direction: "Up";
mode: "OnRelease";
action =
{
type: "Keypress";
keys: ["KEY_UP"];
};
},
{
direction: "Down";
mode: "OnRelease";
action =
{
type: "Keypress";
keys: ["KEY_DOWN"];
};
},
{
direction: "Left";
mode: "OnRelease";
action =
{
type: "Keypress";
keys: ["KEY_LEFTMETA", "KEY_D"]; #切换到桌面
};
},
{
direction: "Right";
mode: "OnRelease";
action =
{
type = "Keypress";
keys: ["KEY_LEFTALT","KEY_LEFTCTRL","KEY_T"]; #打开Terminal
}
},
{
direction: "None";
mode: "OnRelease";
action =
{
type:"Keypress";
keys:["KEY_LEFTMETA"]; #windows键
}
}
);
};
最后附上我的完整配置文件
devices: (
{
name: "M585/M590 Multi-Device Mouse";
smartshift:
{
on: true;
threshold: 30;
};
hiresscroll:
{
hires: true;
invert: false;
target: false;
};
dpi: 1000;
buttons: (
{
cid: 0x52; #中键
action =
{
type: "Gestures";
gestures: (
{
direction: "Up";
mode: "OnRelease";
action =
{
type: "Keypress";
keys: ["KEY_UP"];
};
},
{
direction: "Down";
mode: "OnRelease";
action =
{
type: "Keypress";
keys: ["KEY_DOWN"];
};
},
{
direction: "Left";
mode: "OnRelease";
action =
{
type: "Keypress";
keys: ["KEY_LEFTMETA", "KEY_D"]; #切换到桌面
};
},
{
direction: "Right";
mode: "OnRelease";
action =
{
type = "Keypress";
keys: ["KEY_LEFTALT","KEY_LEFTCTRL","KEY_T"]; #打开Terminal
}
},
{
direction: "None";
mode: "OnRelease";
action =
{
type:"Keypress";
keys:["KEY_LEFTMETA"]; #windows键
}
}
);
};
},
{
cid: 0x56;
action =
{
type: "Keypress";
keys: ["KEY_LEFTCTRL", "KEY_Z"]; # 前侧键撤销
};
},
{
cid: 0x53;
action =
{
type: "Keypress";
keys: ["KEY_DELETE"]; #后侧键delete
};
}
);
}
);
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass
我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主