键盘光标上的输入语言指示符(或光标颜色)

GLa*_*Laz 6 keyboard language cursor

是否可以在键盘光标(或附近)上显示输入语言的某些指示,或者可以根据输入语言更改光标颜色?

我认为对于那些使用多种语言进行输入的人来说,这将是一个很好的补充。

Gre*_*ggD 3

这当然是可能的,但我想出的解决方案非常......丑陋。

首先,您需要使用自己的颜色创建自己的光标主题。您可以将其中的文件/usr/share/icons(检查包含cursor.theme文件的文件夹)复制到您的用户~/.icons文件夹中,根据您的选择重命名它们并着色。为了进行概念验证,我将通过使用系统中应该已经可用的光标主题来向您展示休息。假设为“DMZ-白色”和“DMZ-黑色”。

至于对光标进行着色,您可以使用 GIMP 来完成,它是“着色”功能/过滤器,但您必须将其应用到所有图层(不同大小),然后导出带有.xmc扩展名的文件,然后删除该扩展名,因此名称就像在原始的源主题中。


各种桌面环境有不同的方法来存储当前的键盘布局,对于我正在开发的(MATE),我什至无法找出一个好的方法,所以我需要使用它返回xset -q非常无意义的“掩码”,这是不同的对于每个键盘布局。

尝试在切换键盘布局后运行此命令:

xset -q | grep -A 0 'LED' | cut -c59-67
Run Code Online (Sandbox Code Playgroud)

对于一种布局,它应该为您提供类似“00000002”的信息,而对于另一种布局,它应该为您提供类似“00001002”的信息。稍后您将需要这些值。


现在您必须弄清楚如何在您的环境中通过命令更改光标主题。

以下是 MATE 上的工作原理:

gsettings set org.mate.peripherals-mouse cursor-theme 'DMZ-Black'
Run Code Online (Sandbox Code Playgroud)

...这应该可以在 GNOME 上运行:

gsettings set org.gnome.desktop.interface cursor-theme 'DMZ-Black'
Run Code Online (Sandbox Code Playgroud)

如果您不知道光标主题的正确名称,只需通过 GUI 切换它们并检查:

gsettings get org.mate.peripherals-mouse cursor-theme
gsettings get org.gnome.desktop.interface cursor-theme
Run Code Online (Sandbox Code Playgroud)

现在...最丑陋的部分 - 将它们放在一起并以给定的时间间隔循环运行脚本,这将根据 的值更改光标xset。这是一个简单的方法:

xset -q | grep -A 0 'LED' | cut -c59-67
Run Code Online (Sandbox Code Playgroud)

将此脚本放入某个文件中,应用chmod +x到它(可执行权限),并根据您的情况进行配置并在终端(fe bash /home/glaz/my-dynamic-cursor-script)中进行测试后,您可以将其添加到自动启动和〜VIOLA〜

也许不是最好的解决方案,但它确实有效 - 至少对我来说:)


哦...当您使用该功能时它也有效,该功能允许每个窗口使用不同的输入布局,因此当您将焦点更改到不同的窗口时,光标也会更新。然而,它不适用于使用自己的自定义光标的应用程序 - 这种情况需要您有其他想法:实时跟踪光标并在其旁边渲染一些覆盖层,但我不认为这是就这么简单......它可能需要编写一些专门的应用程序/守护程序来执行此操作。