Linux热键独占键盘,M11xR1 折腾记 ---archlinux下Fn热键控制明暗度

使用archlinux一段时间了,M11xR1在arch的wiki上有文章介绍,基本安装和使用没有什么大问题。默认开启intel显卡,会发现Fn+F4/F5,不能调解明暗度。屏蔽intel显卡,使用nvidia闭源驱动没有问题。但是为了待机的时间够长还是决定使用intel显卡,并通过xmodmap来解决热键的映射。开始的想法是使用xev来捕获Fn+Fx的keycode,但是很不幸,没有反应。后来在查看xmodmap的wiki后得知可以通过xmodmap -pke 来获取keycode表。下面的内容基于archlinux 3.1内核,gnome 3.2

1.xmodmap -pke > ~/.Xmodmap

cat查看后,发现这样一段

keycode 232 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown

keycode 233 = XF86MonBrightnessUp NoSymbol XF86MonBrightnessUp

从字面意思上看因该是显示器明暗度的+-。

接下来就是实现了。

2.使用wiki上的一段代码,发现有问题,后来在他的引用上找到三星笔记本上的一段引用,注意需要setpci和bc,并且需要sudo来执行setpci(非root用户),为了避免失效,还需要将当前用户加入sudovi时使用NOPASSWD参数。DEVICE=00:02.0可以用lspci查看。

#!/bin/bash

# increase/decrease/set/get the backlight brightness (range 0-255)

#

# PCI device on which to operate

DEVICE=00:02.0

# Amount to raise/lower the backlight when called with "up" or "down"

AMOUNT=8

# Minimum backlight value reachable via "down"

MIN=1

# Default backlight level when toggling on

DEFAULT=64

#get current brightness in hex and convert to decimal

var1=`sudo setpci -s $DEVICE F4.B`

var1d=$((0x$var1))

case "$1" in

up)

#calculate new brightness

var2=`echo "ibase=10; obase=16; a=($var1d+$AMOUNT);if (a<255) print a else print 255" | bc`

echo "$0: increasing brightness from 0x$var1 to 0x$var2"

sudo setpci -s $DEVICE F4.B=$var2

;;

down)

#calculate new brightness

var2=`echo "ibase=10; obase=16; a=($var1d-$AMOUNT);if (a>$MIN) print a else print $MIN" | bc`

echo "$0: decreasing brightness from 0x$var1 to 0x$var2"

sudo setpci -s $DEVICE F4.B=$var2

;;

set)

#n.b. this does allow "set 0" i.e. backlight off

echo "$0: setting brightness to 0x$2"

sudo setpci -s $DEVICE F4.B=$2

;;

get)

echo "$0: current brightness is 0x$var1"

;;

toggle)

if [ $var1d -eq 0 ] ; then

echo "toggling up"

sudo setpci -s $DEVICE F4.B=$DEFAULT

else

echo "toggling down"

sudo setpci -s $DEVICE F4.B=0

fi

;;

*)

echo "usage: $0 {up|down|set |get|toggle}"

;;

esac

exit 0

3.把上面的代码制作成backlight文件,chmod +x ,然后就可以尝试一下命令是否有效。

4.确认有效后,就要开始绑定按键了。先开启gnome的keyboard工具,到按键绑定里,选择自定义,添加,注意,这里绑定Fn+FX不会成功,随便绑定一下。名称随便,命令就是/sbin/backlight down和 /sbin/backlight up。 再次测试是否有效。

5.通过keyboard的ui界面是不能绑定fn按键的,需要直接修改他的配置文件。

vi ~/.gconf/desktop/gnome/keybindings/custom0/%gconf.xml,修改为

/sbin/backlight down

backlight down

XF86MonBrightnessDown

vi ~/.gconf/desktop/gnome/keybindings/custom1/%gconf.xml,修改为

/sbin/backlight up

backlight up

XF86MonBrightnessUp

再次回到keyboard ui设置界面,发现都是disabled的,再次绑定,但是这次绑定用Fn+F4/F5。

测试成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值