Ubuntu 18.04 Unity点击触摸板无法触发鼠标左键

Ubuntu 18.04 默认情况下,用的是gnome界面。
但是换回Ubuntu后发现单击触摸板没有触发左键,在gnome的时候是没有这个问题的。
这就说明了不是驱动的问题了。

这里主要是xinput配置的问题

  1. 首先用xinput list查看当前的设备信息
    ⎡ Virtual core pointer                      id=2    [master pointer  (3)]
    ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
    ⎜   ↳ Logitech M515                             id=11   [slave  pointer  (2)]
    ⎜   ↳ DLL06E4:01 06CB:7A13 Touchpad             id=13   [slave  pointer  (2)]
    ⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
        ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
        ↳ Power Button                              id=6    [slave  keyboard (3)]
        ↳ Video Bus                                 id=7    [slave  keyboard (3)]
        ↳ Video Bus                                 id=8    [slave  keyboard (3)]
        ↳ Power Button                              id=9    [slave  keyboard (3)]
        ↳ Sleep Button                              id=10   [slave  keyboard (3)]
        ↳ Integrated_Webcam_HD: Integrate           id=12   [slave  keyboard (3)]
        ↳ Intel HID events                          id=14   [slave  keyboard (3)]
        ↳ Dell WMI hotkeys                          id=15   [slave  keyboard (3)]
        ↳ AT Translated Set 2 keyboard              id=16   [slave  keyboard (3)]
        ↳ Logitech M515                             id=17   [slave  keyboard (3)]
        ↳ FILCO Bluetooth Keyboard                  id=18   [slave  keyboard (3)]
    
    

    找到对应触摸板的设备名DLL06E4:01 06CB:7A13 Touchpad

  2. 获取这个设备的配置信息

    $ sudo xinput list-props "DLL06E4:01 06CB:7A13 Touchpad"
    Device 'DLL06E4:01 06CB:7A13 Touchpad':
        Device Enabled (145):   1
        Coordinate Transformation Matrix (147): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Tapping Enabled (298): 0
        libinput Tapping Enabled Default (299): 0
        libinput Tapping Drag Enabled (300):    1
        libinput Tapping Drag Enabled Default (301):    1
        libinput Tapping Drag Lock Enabled (302):   0
        libinput Tapping Drag Lock Enabled Default (303):   0
        libinput Tapping Button Mapping Enabled (304):  1, 0
        libinput Tapping Button Mapping Default (305):  1, 0
        libinput Natural Scrolling Enabled (280):   0
        libinput Natural Scrolling Enabled Default (281):   0
        libinput Disable While Typing Enabled (306):    1
        libinput Disable While Typing Enabled Default (307):    1
        libinput Scroll Methods Available (282):    1, 1, 0
        libinput Scroll Method Enabled (283):   1, 0, 0
        libinput Scroll Method Enabled Default (284):   1, 0, 0
        libinput Click Methods Available (308): 1, 1
        libinput Click Method Enabled (309):    1, 0
        libinput Click Method Enabled Default (310):    1, 0
        libinput Middle Emulation Enabled (287):    0
        libinput Middle Emulation Enabled Default (288):    0
        libinput Accel Speed (289): 0.000000
        libinput Accel Speed Default (290): 0.000000
        libinput Left Handed Enabled (294): 0
        libinput Left Handed Enabled Default (295): 0
        libinput Send Events Modes Available (265): 1, 1
        libinput Send Events Mode Enabled (266):    0, 0
        libinput Send Events Mode Enabled Default (267):    0, 0
        Device Node (268):  "/dev/input/event9"
        Device Product ID (269):    1739, 31251
        libinput Drag Lock Buttons (296):   <no items>
        libinput Horizontal Scroll Enabled (297):   1
    
    

    这里需要注意的是 libinput Tapping Enabled 这个字段,如果为0则无法触发点击左键

  3. 修改配置(临时修改方案)
    执行 xinput set-prop "DLL06E4:01 06CB:7A13 Touchpad" "libinput Tapping Enabled" 1
    执行完即可,不需要重启OS
  4. 修改配置(长期修改方案)
    修改文件 /usr/share/X11/xorg.conf.d/40-libinput.conf, 增加以下的信息
    Section "InputClass"
    Identifier "DLL06E4:01 06CB:7A13 Touchpad"
    MatchProduct "DLL06E4:01 06CB:7A13 Touchpad"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    Option "Tapping" "on"
    Driver "libinput"
    EndSection

    修改后重启机器

C++检测文件系统是否为ZFS

通过C++代码判断所在目录的文件系统格式是否为ZFS
这里主要是要获取到通过statfs来获取文件系统的信息。

在Ubuntu下(16.04和14.04)下,都没有定义宏 ZFS_SUPER_MAGIC, 所以需要自己对其进行定义。如果判断的是其他文件系统,也可以通过这种方法进行判断。

#include <iostream>
#include <string>
#include <sys/vfs.h>
#include <linux/magic.h>

#ifndef ZFS_SUPER_MAGIC
#define ZFS_SUPER_MAGIC   0x2FC12FC1
#endif

using namespace std;

int main(void)
{
    const string path = "/mnt/zfs_global_pool/d5ab86068bd711e78000b4b52fd9615f";

    struct statfs fs_info;

    if (statfs(path.c_str(), &fs_info) == -1) {
        cerr << "Cannot get " << path << " stat info" << endl;
        return -1;
    }

    if (fs_info.f_type != ZFS_SUPER_MAGIC)
        cout << path << " is not ZFS" << endl;
    else
        cout << path << " is ZFS" << endl;

    return 0;
}

// vim: set et ts=4 sts=4 sw=4:

修改SSH的默认端口

今天无意中查看一下vps的登录日志/var/log/auth.lg
不看还好,一看吓一跳。每隔一分钟就有人尝试登录一次。

虽然现在是通过秘钥进行登录,而且还是通过root用户进行登录的。
感觉存在严重的安全隐患,必须想想办法了。


1. 限制root用户登录

首先,限制root用户登录。
这样用自己创建的用户,起码用户名对方是不知道的,大大减少了被破解的危险。
修改配置文件:

#PermitRootLogin yes
PermitRootLogin no

2. 修改端口

众所周知,ssh默认端口是22,把22修改成其他,可以降低风险。
如把端口修改成8888,修改配置文件:

#Port 22
Port 8888

修改deb包里的内容并重新打包

以安装有道词典为例子:
原文连接为:http://www.cnblogs.com/scplee/archive/2016/05/13/5489024.html

因为旧版本的包在新版本的系统里面所依赖的包有所不同,所以要更新一下依赖:

  1. 从官方下载Ubuntu版本的deb包:youdao-dict_1.1.0-0-ubuntu_amd64.deb
  2. 创建youdao-dict目录,把该deb包解压到youdao-dict目录:
    dpkg -X ./youdao-dict_1.1.0-0-ubuntu_amd64.deb youdao-dict
  3. 解压deb包中的control信息(包的依赖就写在这个文件里面)
    dpkg -e ./youdao-dict_1.1.0-0-ubuntu_amd64.deb youdao-dict/DEBIAN
  4. 编辑control文件,删除Depends里面的gstreamer0.10-plugins-ugly。
  5. 重新打包
    dpkg-deb -b youdao-dict youdaobuild.deb
  6. 安装重新打包的安装包
    dpkg -i youdaobuild.deb