TL;DR:在Linux上,如何使用POSIX shell禁用鼠标一秒钟,而不必等待第二秒钟并立即执行某些操作?
操作系统:Linux Mint 18.3 64位肉桂色,带LightDM显示管理器和Mutter(松饼)窗口管理器,X11窗口系统。
脚本环境:dash
我需要:
做点什么(不管这个问题的具体目的是什么,但你可以阅读the full script on Core Review)。
禁用鼠标一秒钟。但剧本必须继续。这很重要。
立即运行应用程序(Lightshot在常规打印屏幕模式下)。
理由:由于Lightshot可能包含一个错误,鼠标不能在打印屏幕前移动,否则通常会导致以下情况:
linux - 在Linux上,如何使用POSIX Shell禁用鼠标一秒钟,而不必等待第二秒钟并立即执行一些工作?-LMLPHP

最佳答案

TL;博士
假设,在我的系统中,鼠标设备ID等于12。然后,执行此技巧的函数将在POSIX shell脚本中显示如下:

my_mouse_device_id=12

disable_mouse_for_a_second()
{
    if xinput --disable "$1" 2> /dev/null
    then
        (
            sleep 1s
            xinput --enable "$1"
        ) &
        return 0
    else
        return 1
    fi
}

# example usage
if disable_mouse_for_a_second "$my_mouse_device_id"
then
    echo "Success"
else
    echo "Failure"
fi

长话短说
您需要使用以下命令查找鼠标设备ID:
xinput list --short

This thread对我有很大帮助,例如以下内容已被弃用:
xinput --set-int-prop

之后我们需要运行这两个命令:
sleep 1s
xinput --enable "$my_mouse_device_id"

棘手的是我们需要:
asubshell(。。。)
背景工作&
才能正常工作。
从实际的角度来看,我们需要做的就是将它包装成一个好的函数。

关于linux - 在Linux上,如何使用POSIX Shell禁用鼠标一秒钟,而不必等待第二秒钟并立即执行一些工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48707661/

10-11 19:00