使用 .xinitrc 更改键盘映射

使用 .xinitrc 更改键盘映射

我已在主目录中创建了一个 .xinitrc 文件。想要从目录 ${HOME}/bin/inge 运行文件 xinit.rc。

以下是做事的方式吗?

文件:.xinitrc

#!/bin/bash

source ${HOME}/bin/inge/xinit.rc

文件:${HOME}/bin/inge/xinit.rc

#!/bin/bash

linge_trk="${HOME}/bin/inge"

xmodmap_variant=2
if (( xmodmap_variant == 0 )); then
  xmodmap ${linge_trk}/inge-xmodmap
elif (( xmodmap_variant == 1 )); then
  xmodmap ${linge_trk}/camswap-xmodmap
else
  echo "Not using xmodmap"
fi

答案1

您可能不想创建文件夹,而是~/bin/希望将特定文件类型放在其适当的目录

  • /etc配置文件,在你的情况inge-xmodmapcamswap-xmodmap
  • /usr/bin在本例中为用户二进制文件somescript

虽然您可以随意命名脚本,但这xinit.rc似乎不是一个合适的名称,因为它很容易与文件混淆.xinitrc。因此,我将使用它somescript作为脚本名称。

您可以修改脚本以接受参数,并使用文件中的参数调用它.xinitrc以设置适当的键盘布局。这还有一个优点,即可以更轻松地手动调用脚本。

例子:

#!/bin/bash

#keymap directory
somescript_configdir="/etc/somescript"

#command help
if [ "$#" -eq 0 ] || [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
    echo -e "keymap helper script"
    echo -e "Usage: somescript [OPTION] VARIANT\n"
    echo -e "Parameter              Desciption\n"
    echo "-h, --help                show this help text"
    echo "-s,  --set                set keyboard mapping, requires VARIANT"
    exit 0
#parse arguments
elif ( [ -z "$2" ] && [ "$1" == "-s" ] ) || ( [ -z "$2" ] && [ "$1" == "--set" ] ); then
    echo "Error: setting the keyboard mapping requires VARIANT as argument!"
    exit 0
elif [ "$2" == "1" ] && ( [ "$1" == "-s" ]  || [ "$1" == "--set" ] ); then
    xmodmap "$somescript_configdir/inge-xmodmap"
elif [ "$2" == "2" ] && ( [ "$1" == "-s" ]  || [ "$1" == "--set" ] ); then
    xmodmap "$somescript_configdir/camswap-xmodmap"
fi

如果/usr/bin/在您的中,$PATH您可以使用来更改键盘映射somescript -s 1,如果您将它放在您的.xinitrc文件中,它也应该可以工作。

相关内容