小米笔记本安装Ubuntu后特殊键终于可用了

最近在小米笔记本上安装了Ubuntu18.04.1,发现“飞行模式(和F9同键)”,“触摸板启停(Fn+Space)”,“截图(和F7同键)”三个特殊键不能用。

查询特殊建keycode

查阅资料后发现xevshowkeyxbindkeys等命令可以查看每个键的keycode,acpi_listen可以查询预置的触发事件。

通过以下命令测试后

xbindkeys -k # 分别查询不能用的三个特殊建,只识别了“飞行模式”键,keycode为255,其他两个键不能识别
xev # 分别查询不能用的三个特殊建,三个键都不能识别
showkey -k # 分别查询不能用的三个特殊建,三个键都不能识别
acpi_listen  # 分别查询不能用的三个特殊建,三个键都不能识别

dmesg命令可以看到硬件的检测或者断开连接的信息。所以继续测试没有查询到keycode的“触摸板启停”,“截图”键。按下“触摸板启停”键后,有如下信息提示,按下“截图”键后没有任何提示。

May 21 11:18:59 localhost kernel: atkbd.c: Unknown key pressed (translated set 2, code 0xf1 on isa0060/serio0).
May 21 11:18:59 localhost kernel: atkbd.c: Use 'setkeycodes e071 ' to make it known.

按照提示信息,使用setkeycodes重新设置键值,code 0xf1转换成十进制为241,命令如下:

sudo setkeycodes e071 241

重新设置键值后,通过xbindkeys -k查询键值为249。

注意:重新设置键值后,重启电脑会失效,所以需要将sudo setkeycodes e071 241加入开机启动。方法请参考如下链接:ubuntu-18-04-rc-local-systemd设置

编写绑定脚本

至此,我们已经获取了“飞行模式(和F9同键)”,“触摸板启停(Fn+Space)”这两个键的键值,分别为255和249。然后编写绑定脚本,保存在/opt目录下,并赋予执行权限,如下:

Synaptics.sh

# 启停触摸板:
# ----------------------------------
#!/bin/bash

s=$(xinput|grep Synaptics)  # 获取触摸板信息
id=$(echo ${s:50:2})  # 获取触摸板id
output=$(xinput list-props $id)  # 获取触摸板详细信息
if [[ "$output" =~ Device.Enabled.\(142\):.1 ]]  # 判断Device Enabled (142)为1
then
    xinput disable $id  # 禁用触摸板
else
    xinput enable $id  # 启用触摸板
fi

airplane.py

# 飞行模式:
# -----------------------------------
# coding=utf-8

import os

airplane = os.popen('rfkill list').read()  # 获取蓝牙、无线软硬开关信息

airplane = airplane.replace('\t','').split('\n')  # 将信息存储在列表中

if airplane[1] == 'Soft blocked: no' or airplane[4] == 'Soft blocked: no':  # 判断蓝牙或无线是否软关闭
    os.popen('rfkill block all')  # 飞行模式打开
else:
    os.popen('rfkill unblock all')  # 关闭飞行模式

配置绑定文件

新建绑定配置文件,如果没有安装xbindkeys,请执行sudo apt install xbindkeys

xbindkeys --defaults > $HOME/.xbindkeysrc

配置文件.xbindkeysrc中添加如下内容:

"python3 /opt/airplane.py"
    m:0x0 + c:255

"/opt/Synaptics.sh"
    m:0x0 + c:249

然后重启电脑,“飞行模式(和F9同键)”,“触摸板启停(Fn+Space)”这两个键已经可以正常使用了。可惜,作者到写这篇文章前,还没有找到获取“截图”键keycode的方式,希望有大神出现指教一二。

你可能感兴趣的:(小米笔记本安装Ubuntu后特殊键终于可用了)