如何追踪xkbmap的变化?

如何追踪xkbmap的变化?

我在 Ubuntu (14.04.5) NoMachine 服务器上运行 Fluxbox。我有一个非常简单的startup文件:

fluxbox="$HOME/.fluxbox"
stderr="$fluxbox/stderr"
(umask 077; > "$stderr")
exec 2> "$stderr"
setxkbmap de nodeadkeys
exec ssh-agent fluxbox -verbose -log "$fluxbox/log"

我的问题是,在我在启动文件中设置 xkbmap 后,某些进程正在修改它。nodeadkeys在我设置它后大约一秒钟,该变体就会丢失。为了跟踪这种行为,我编写了一个跟踪程序,我在setxkbmap命令前面启动该程序。这是我的跟踪脚本。

#! /bin/bash
set -eu
exec > $HOME/setxkbmap.trace
n=${1:-100000}
while ((n>0)); do
  date +"%T.%6N"
  setxkbmap -query 
  n=$((n-1))
done

当脚本启动时,变量被设置:

$ head -5 setxkbmap.trace 
16:09:04.930663
rules:      evdev
model:      evdev
layout:     de
variant:    nodeadkeys

大约一秒钟后,变体消失了:

$ grep -A 5 nodeadkeys setxkbmap.trace | tail -5
16:09:05.864251
rules:      evdev
model:      evdev
layout:     de
16:09:06.309512

我如何知道哪个进程正在更改选项?

相关内容