我正在寻找一种在Linux中使用反引号(`)/ tilde(〜)键和其他键创建键盘快捷键的方法。在一个理想的情况下:
我在AutoHotKey for Windows中有类似的东西,我一直在寻找一种在(任何)Linux环境中重新创建它的方法。我会考虑使用任何GUI,如果我可以使这个工作,但当然更多"一般"解决方案会更好。
答案 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等等终于找到了解决方案。以下是步骤。
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
我希望它适合你。在它起初不起作用,然后喝一杯咖啡并继续战斗直到它起作用;)
答案 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。