在筆記型電腦上觀看電影時,應該巧妙地禁用其螢幕:
- 如果沒有插入外部螢幕,請勿停用。
- 如果使用修飾鍵開啟電影,請勿停用。
- 如果插入外部螢幕且未使用修飾符,請停用筆記型電腦螢幕。
- 當媒體播放器退出時,恢復筆記型電腦螢幕。
我編寫了以下腳本:
#!/bin/bash
if [ "$(cat /sys/class/drm/card0-VGA-1/status)" = connected ]
then
xrandr --output eDP1 --off
vlc "$1"
while [ "$(pidof vlc)" > 0 ]
do
sleep 1
done
xrandr --output eDP1 --auto --below VGA1
else
vlc "$1"
fi
eDP1代表筆記型電腦螢幕,VGA1代表外接螢幕。該腳本透過將電影檔案~/.local/share/applications/mimeapps.list
與以下桌面檔案關聯來使用:
[Desktop Entry]
Name=VLC
Comment=
Exec=path/to/the/above/script
Icon=vlc
Terminal=false
Type=Application
StartupNotify=true
您能否建議一種修改腳本或桌面檔案的方法,或任何其他檢查修飾鍵的方法 - 唯一的限制是必須使用單一操作來開啟影片。
答案1
似乎沒有現成的解決方案。不過,直接使用Xlib和Xkb並不難。
建立一個文件getmodkey.c
:
#include <X11/Xlib.h>
#include <stdio.h>
#include <X11/XKBlib.h>
int main() {
XkbStateRec r;
Display* d = XOpenDisplay(NULL);
XkbGetState(d, XkbUseCoreKbd, &r);
printf("mod: 0x%x\n", r.mods);
XCloseDisplay(d);
return !( r.mods & 1 );
}
並用 編譯它-lX11
,例如
make LDLIBS="-lX11" getmodkey
0
如果按下 Shift 鍵,則程式的退出狀態代碼為,1
否則。若要測試不同的修飾符,請調整(r.mods & keymask)
條件(Shift 的遮罩為 1)。
那麼,這個程式應該很容易集成,
if getmodkey; then
echo "shift!"
else
echo "no shift"
fi