Kbd
监视器插件,用于显示选择的键盘。
我是这样安装的
Run $ Kbd [("it", "IT"), ("ru(phonetic)", "RU")]
然后通过
setxkbmap
切换键盘,显示器会反映变化。
到目前为止一切顺利。
现在,假设
[]
)即使这意味着编写
MyOwnKbd
插件。
还假设另一个要求是我不希望在外部脚本中编码旋转逻辑。
由于我不想绑定一个键来在键盘之间切换,我正在考虑通过单击显示器本身来允许切换。
我知道我可以将显示器的文本包裹在
<action=`the command`>
和 </action>
中以使其可点击,但我不知道 the command
应该是什么。
我知道我可以编写一个 shell 脚本来检测键盘的状态并设置另一个键盘的状态,但我想使用上面的列表,
[("it", "IT"), ("ru(phonetic)", "RU")]
作为单击监视器应该循环的键盘布局的来源,所以问题就变成了:我可以将点击监视器事件反馈给监视器的业务逻辑吗?
或者,如果不可能,我还有什么其他选择?
(1) 例如我本可以做到的
setxkbmap -layout it,ru -variant ,phonetic -option 'grp:caps_toggle'
一劳永逸,Caps Lock将允许在这两种布局之间切换,并且插件将反映正在使用的布局。但我不想将任何键映射到布局切换操作。
嗯,并不是我不想要这个解决方案,而是我很好奇知道另一种解决方案是什么。
(我已经删除了之前的问题,因为导致我提出这个问题的具体场景实际上使问题变得复杂。如果这个问题的答案不足以解决这个问题,我将取消删除它。)
最终我自己想出了一个解决方案,它与PR #696合并。
当我写下
我知道我可以将显示器的文本包裹在
和<action=`the command`>
中以使其可点击,但我不知道命令应该是什么。</action>
我错误地认为我必须知道
the command
无论当前布局如何都会做正确的事情,但这是不正确的,因为我可以为每个布局计算不同的命令,这将简单地切换到下一个布局.
举个具体的例子,如果我这样安装插件,
Run $ Kbd [("it", "IT"), ("ru(phonetic)", "RU"), ("us", "US")]
选择3种布局中的每一种时我要打印的文本如下:
"<action=`setxkbmap -layout ru -variant phonetic` button=1>IT</action>"
"<action=`setxkbmap -layout us` button=1>RU</action>"
"<action=`setxkbmap -layout it` button=1>US</action>"