使用反引号/ Grave / Tilde作为修饰键

时间:2015-08-24 12:38:14

标签: linux user-interface shortcut modifier tilde

我正在寻找一种在Linux中使用反引号(`)/ tilde(〜)键和其他键创建键盘快捷键的方法。在一个理想的情况下:

  1. 按下波浪向下无效
  2. 按下波浪符号时按另一个键会触发(可自定义的)快捷键
  3. 在按下另一个键之前/之后释放波浪号时,只需发送波浪键击。
  4. 我在AutoHotKey for Windows中有类似的东西,我一直在寻找一种在(任何)Linux环境中重新创建它的方法。我会考虑使用任何GUI,如果我可以使这个工作,但当然更多"一般"解决方案会更好。

3 个答案:

答案 0 :(得分:0)

我不确定它是否适合您,但您应该检查:

这两个工具都可以让您创建一些自定义操作和快捷方式。

以下是xdotool的示例:https://askubuntu.com/questions/212154/create-a-custom-shortcut-that-types-clipboard-contents

希望它有所帮助并祝你好运:)

布鲁诺

答案 1 :(得分:0)

在另一台机器上切换到Ubuntu之后,我也想在我的AHK脚本中使用代字号作为修饰键。

我做了一些关于ex的不同工具的研究。 xdotool,xev,autotools,xbindkeys等等终于找到了解决方案。以下是步骤。

  1. 安装Autokey,python,python evded模块,xte(sudo apt-get install xautomation)。
  2. 阅读一些关于Autokey以及它如何启动python脚本或创建热字符串的内容。在Autokey中,我们可以设置一个热键来调用python脚本。因此,您可以将下面的python脚本分配给您的代字键,或者您计划创建的任何自定义热键。
  3. 这是必需的自定义功能(想想还没有完全移植到linux,我把它编写在autohotkey中,只是喜欢它。它可以将手粘在键盘上;))
    • Tilde +向上箭头:将鼠标指针向上移动100个位置
    • Tilde +向下箭头:将鼠标指针向下移动100个位置
    • Tilde +向右箭头:将鼠标指针向右移动100个位置
    • Tilde +向左箭头:将鼠标指针向左移动100个位置
    • Tilde + Enter:鼠标左键单击(python脚本中不存在)
    • Tilde + Alt + Enter:右键单击
  4. 我使用波浪号(KEY_GRAVE)作为我的修饰键。按下此键后,Autokey将启动python脚本。脚本运行循环,直到波形符号键被释放。在循环中,脚本继续检测键盘输入。在向上箭头键(KEY_UP)按下,脚本发送命令以使用'xte'等相对位置(0,-100)移动鼠标。 from evdev import InputDevice, categorize, ecodes from select import select dev = InputDevice('/dev/input/event4') releasekey = False while releasekey==False: r,w,x = select([dev], [], []) for event in dev.read(): if event.type == ecodes.EV_KEY: #system.exec_command("xte 'mousermove 0 3'", False) #break if event.code == ecodes.KEY_UP: if event.value == 1: system.exec_command("xte 'mousermove 0 -100'", False) if event.code == ecodes.KEY_DOWN: if event.value == 1: system.exec_command("xte 'mousermove 0 100'", False) if event.code == ecodes.KEY_RIGHT: if event.value == 1: system.exec_command("xte 'mousermove 100 0'", False) if event.code == ecodes.KEY_LEFT: if event.value == 1: system.exec_command("xte 'mousermove -100 0'", False)
    if event.code == ecodes.KEY_GRAVE: if event.value == 0: releasekey = True break
  5. 您必须调整dev = InputDevice(' / dev / input / event4 ')行以指定键盘的正确名称。就我而言,event4是我的键盘。你的可能会有所不同。您可以在python-evdev上查看方便的教程“阅读事件”。该代码实际上输出了/ dev / input下列出的键盘名称。实际上,我的脚本是对该教程脚本的扩展。
  6. 唯一的问题是必须以root用户身份启动python脚本,否则无法访问键盘输入设备。您可以通过创建一个udev规则文件来解决这个问题,该文件会更改设备的权限以使其可用于阅读编写,例如。创建规则文件并添加此行 KERNEL =='event4',MODE =“0660”并加载规则。最后,您必须将自己添加到具有该设备读/写权限的GROUP中。可以使用/ dev / input文件夹中的ls -la找到有关文件权限的信息。
  7. 我希望它适合你。在它起初不起作用,然后喝一杯咖啡并继续战斗直到它起作用;)

答案 2 :(得分:0)

我想我终于明白了!!

我使用 xmodmap grave键转换为修饰符Hyper_L,并使用XCape发送密钥,如果释放密钥而不使用其他密钥按压。

当按下并释放meta - 键(" windows键")而没有其他键时,Xcape打算打开应用程序菜单("开始菜单"),所以作为额外的奖励,它也是这样做的。这意味着您可以使用Meta作为修饰符,例如Meta-F来打开文件管理器并单独使用meta - 键来打开胡须菜单。

如果一切正常,您可以使用~-k打开键盘设置管理器,然后使用〜-键创建新的快捷方式。因为这仍然很烦人且不易在不同系统之间移植,我使用 xfconf-query 包含了一些快捷方式,这可能只适用于Xfce。

这是我的脚本的基础:

#!/bin/sh

# reset pretty much ALL keyboard settings 
setxkbmap

# Free up the mod3 and mod4 flags from all keys it may be associated with:
xmodmap -e "clear mod3"
xmodmap -e "clear mod4"

# Add Hyper_L to the grave key (49)
xmodmap -e "keycode 49 = Hyper_L asciitilde grave asciitilde"

# You need a grave key somewhere else (!) so, bind it to an unused key:
xmodmap -e "keycode 250 = grave"

# Restore Mod4 but without Hyper_L (which was at location 4)
xmodmap -e "add mod4 = Super_L Super_R Super_L"

# Assign the mod3 to Hyper_L:
xmodmap -e "add mod3 = Hyper_L"

dist=100
/usr/bin/xfconf-query -c xfce4-keyboard-shortcuts -p /commands/custom/\<Hyper\>Right -s "xdotool mousemove_relative -- $dist 0" --create -t string
/usr/bin/xfconf-query -c xfce4-keyboard-shortcuts -p /commands/custom/\<Hyper\>Down  -s "xdotool mousemove_relative -- 0 $dist" --create -t string
/usr/bin/xfconf-query -c xfce4-keyboard-shortcuts -p /commands/custom/\<Hyper\>Left  -s "xdotool mousemove_relative -- -$dist 0" --create -t string
/usr/bin/xfconf-query -c xfce4-keyboard-shortcuts -p /commands/custom/\<Hyper\>Up    -s "xdotool mousemove_relative -- 0 -$dist" --create -t string
/usr/bin/xfconf-query -c xfce4-keyboard-shortcuts -p /commands/custom/\<Hyper\>space -s "xdotool click 1" --create -t string

/usr/bin/xfconf-query -c xfce4-keyboard-shortcuts -p /commands/custom/\<Hyper\>k -s "xfce4-keyboard-settings" --create -t string

# (re)starting xcape to produce a ` after key-up if no other key was pressed
killall xcape
xcape -t5000 -e "#49=grave;Super_L=Control_L|Escape" &

可以找到更加扩展的脚本版本,还可以找到更多快捷方式here