sxhkd - Arch Linux 中文维基

跳转到内容

# sxhkd

来自 Arch Linux 中文维基

相关文章

- Xbindkeys
- Xmodmap

翻译状态：

- 本文（或部分内容）译自 Sxhkd，最近一次同步于 2024-7-3，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

sxhkd是一个简单的 X 热键守护进程，由 bspwm 的开发者设计，能通过执行命令对输入事件做出反应。

## 安装

安装 sxhkd包 或 sxhkd-gitAUR。

## 配置

sxhkd 默认使用 `$XDG_CONFIG_HOME/sxhkd/sxhkdrc` 作为配置文件。可以使用 `-c` 选项指定其他配置文件。

配置文件中的每一行都是这样解释的：

- 如果以 `#` 开头，则会被忽略。
- 如果以一个或多个空白命令开头，则作为命令读取。
- 否则，将作为热键进行解析：每个键名之间用空格和/或 `+` 字符分隔。

通用语法：

    [MODIFIER + ]*[@]KEYSYM
        COMMAND

其中 `MODIFIER` 是以下名称之一： `super`、`hyper`、`meta`、`alt`、`control`、`ctrl`、`shift`、`mode_switch`、`lock`、`mod1`、`mod2`、`mod3`、`mod4`、`mod5`。如果在 keysym 的开头添加了 `@`，命令将在按键释放事件中运行，否则将在按键按下事件中运行。`KEYSYM`名称是从`xev`中获取的。

鼠标热键可通过使用以下特殊 keysym 名称之一来定义： `button1`、`button2`、`button3`、...、`button24`。热键可以包含`STRING_1`, ...,`STRING_N`} 形式的序列，在这种情况下，命令还必须包含一个包含N元素的序列：两个序列配对生成N热键。如果命令中包含大括号（`{`, `}`），例如：`awk '{print $1}'` ，请使用反斜线 `\` 来转义，例如：`awk '\{print$1/}'`。此外，序列可以包含 `A-Z` 形式的范围，其中A和Z是字母数字字符。

实际执行的是 `SHELL -c COMMAND`，这意味着可以在 `COMMAND` 中使用环境变量。`SHELL`将是以下列表中第一个定义的环境变量的内容： `SXHKD_SHELL`、`SHELL`。如果 sxhkd 收到 `SIGUSR1` 信号，它将重新加载配置文件。

### 例子

    $XDG_CONFIG_HOME/sxhkd/sxhkdrc

    # On mouse button 1 press Alt_R+F1
    button1
        xte "keydown Alt_R" "keydown F1" "keyup Alt_R" "keyup F1"

    # 按下鼠标 button 2，暂停 3 秒，然后按 Alt_R+F2 button2
        xte "sleep 3" "keydown Alt_R" "keydown F2" "keyup Alt_R" "keyup F2"

#### 将命令绑定到一个按键上

这篇文章或章节的翻译质量不佳。

原因：表述与翻译存在问题。（在 Talk:Sxhkd# 中讨论）

有些用户可能希望将命令绑定到单个按键上，就像在 Windows 中使用 `Super` 键打开"开始"菜单一样。在 sxhkd 中，这可以通过绑定到由单个 keysym 的按键按下和按键释放事件组成的 chord chain 来实现，如下所示：

    $XDG_CONFIG_HOME/sxhkd/sxhkdrc

    # Program launcher
    Super_L; @Super_L
        rofi -show drun

这种复杂的模式是必要的，因为如果没有明确的 chord chain（即单一的 `@Super_L`），sxhkd 将在 "任何 "释放按键时触发绑定，即使该按键被用于另一个 chord chain。此外，由于 sxhkd 不支持在修饰符中使用 `@` 符号（表示按键释放），因此必须使用按键符号来代替修饰符（`Super_L` 而不是 `super`）。

## 用法

配置完成后，您可能希望将 sxhkd 设置为自动启动；有关详情，请参阅桌面环境或窗口管理器的相应文章。

如果您的桌面环境支持Desktop Application Autostart Specification，则可以通过在恰当目录下创建 `sxhkd.desktop` 文件以启动 sxhkd：

    ~/.config/autostart/sxhkd.desktop

    [Desktop Entry]
    Name=sxhkd
    Comment=Simple X hotkey daemon
    Exec=/usr/bin/sxhkd
    Terminal=false
    Type=Application

## 参见

- 官方网站 - 包括配置选项、绑定示例和源代码。
- Arch Linux forum thread

分类：​

- 键盘配置
- X 服务器

隐藏分类：​

- 使用“模板:糟糕的翻译”标记的页面或章节

sxhkd
添加话题