云网牛站
所在位置:首页 > Linux教程 > 小米笔记本安装Ubuntu 18.04系统后使用特殊键的方法

小米笔记本安装Ubuntu 18.04系统后使用特殊键的方法

2019-01-02 21:07:54作者:地空神一稿源:linux站

在小米笔记本中安装了Ubuntu 18.04系统后发现飞行模式(和F9同键),触摸板启停(Fn+Space),截图(和F7同键)三个特殊键不能使用,经过摸索,得到了正确的处理方法,使其能够使用上特殊键。不过要声明的是,目前还没有找到获取截图键keycode的方式。

 

查询特殊建keycode

查阅资料后发现xev、showkey、xbindkeys等命令可以查看每个键的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 <keycode>' 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目录下,并赋予执行权限。

1、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

2、airplane.py如下:

# 飞行模式:

# ----------------

# coding=utf-8

import os

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

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

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)这两个键已经可以正常使用了。

 

附:Ubuntu 18.04 rc.local systemd设置

ubuntu18.04不再使用initd管理系统,改用systemd(Systemd入门教程)。

然而systemd很难用,改变太大,跟之前的完全不同。

使用systemd设置开机启动

为了像以前一样,在/etc/rc.local中设置开机启动程序,需要以下几步:

1、systemd默认读取/etc/systemd/system下的配置文件,该目录下的文件会链接/lib/systemd/system/下的文件。一般系统安装完/lib/systemd/system/下会有rc-local.service文件,即我们需要的配置文件。

链接过来:

ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service  

cd /etc/systemd/system/  

cat rc-local.service  

rc-local.service内容如下:

#  SPDX-License-Identifier: LGPL-2.1+  

#  

#  This file is part of systemd.  

#  

#  systemd is free software; you can redistribute it and/or modify it  

#  under the terms of the GNU Lesser General Public License as published by  

#  the Free Software Foundation; either version 2.1 of the License, or  

#  (at your option) any later version.  

# This unit gets pulled automatically into multi-user.target by  

# systemd-rc-local-generator if /etc/rc.local is executable.  

[Unit]  

Description=/etc/rc.local Compatibility  

Documentation=man:systemd-rc-local-generator(8)  

ConditionFileIsExecutable=/etc/rc.local  

After=network.target  

[Service]  

Type=forking  

ExecStart=/etc/rc.local start  

TimeoutSec=0  

RemainAfterExit=yes  

GuessMainPID=no  

[Install]  

WantedBy=multi-user.target  

Alias=rc-local.service  

1) [Unit] 区块:启动顺序与依赖关系。

2) [Service] 区块:启动行为,如何启动,启动类型。

3) [Install] 区块,定义如何安装这个配置文件,即怎样做到开机启动。

2、创建/etc/rc.local文件:

touch /etc/rc.local  

3、赋可执行权限:

chmod 755 /etc/rc.local  

4、编辑rc.local,添加需要开机启动的任务:

#!/bin/bash  

echo "test rc " > /var/test.log  

5、执行reboot重启系统,然后查看test.log。

 

相关主题

Ubuntu 18.04 linux怎么访问小米路由的硬盘

精选文章
热门文章