setxkbmap
私はすべてのゲームのコントロールを壊すタイピングにDvorakを使用しているので、ワインゲームを始める前にキーボードレイアウトを設定する必要があります。私が望むのは、ゲームを開始する前に現在のキーボードレイアウトを取得して変数に保存してから、ゲームの終了後に復元するスクリプトを書くことです。
ORIGINAL_LAYOUT=`setxkbmap -query | grep -P 'layout\:\s{5}(\w+)'`
setxkbmap us
wine ...
setxkbmap $ORIGINAL_LAYOUT
私が経験している問題は、grepが私のキャプチャグループだけでなく、行全体と一致することです。一致するキャプチャグループを簡単にダンプする方法はありますか?
たとえば、出力は次のようになりsetxkbmap -query
ます。
rules: evdev
model: pc105
layout: dvorak
レイアウトをつかむことに興味があります。
答え1
grepを-o
使って少し変更できます
-o, --only-matching
Print only the matched (non-empty) parts of a matching line, with each such
part on a separate output line.
。
ORIGINAL_LAYOUT=`setxkbmap -query | grep -oP '(?<=layout\:\s{5})\w+'`
Lookbehindを使用するように正規表現を変更したので、一致しません。
答え2
次のコマンドを試してくださいawk
。
setxkbmap -query | grep layout | awk '{print $2}'
またはcut
コマンドを使用してください
setxkbmap -query | grep layout | cut -d : -f2