Set*_*eth 151 keyboard-layout shortcut-keys xmodmap xkb xbindkeys
我想更改键盘上某些键的键绑定。我想要一些运行命令,而其他一些来激活不同的键。
我可以使用哪些应用程序来执行此操作?
指数:
Set*_*eth 108
sudo apt-get install xbindkeys
Run Code Online (Sandbox Code Playgroud)
Xbindkeys 是一个非常通用的程序,可以让您非常轻松地重新映射键。它使用一个配置文件,我默认位于您的主目录中,将键绑定更改为某些命令。
要创建默认配置文件,请使用以下命令:
xbindkeys --defaults
Run Code Online (Sandbox Code Playgroud)
打印默认配置文件。因此,如果您想创建包含默认值的文件,您将使用:
xbindkeys --defaults > $HOME/.xbindkeysrc
Run Code Online (Sandbox Code Playgroud)
它将默认值打印到名为.xbindkeysrc
home ( ~
)的隐藏文件中。
现在要实际更改键的绑定,我们首先需要知道这些键的名称或键符是什么。 xbindkeys
允许我们使用-k
句柄来查找键或键组合的名称。跑:
xbindkeys -k
Run Code Online (Sandbox Code Playgroud)
然后按一个键或组合键。输出将看一些类似这样(按下时space):
"NoCommand"
m:0x10 + c:65
Mod2 + space
Run Code Online (Sandbox Code Playgroud)
"No Command"
告诉我们当前没有任何命令与Space密钥相关联。
m:0x10 + c:65
Mod2 + space
Run Code Online (Sandbox Code Playgroud)
是键/键组合的名称。
让我们打开您之前制作的配置文件:
gedit .xbindkeysrc
Run Code Online (Sandbox Code Playgroud)
这是默认配置文件的摘录:
#
# A list of keys is in /usr/include/X11/keysym.h and in
# /usr/include/X11/keysymdef.h
# The XK_ is not needed.
#
# List of modifier:
# Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock),
# Mod3 (CapsLock), Mod4, Mod5 (Scroll).
#
# The release modifier is not a standard X modifier, but you can
# use it if you want to catch release events instead of press events
# By defaults, xbindkeys does not pay attention with the modifiers
# NumLock, CapsLock and ScrollLock.
# Uncomment the lines above if you want to pay attention to them.
#keystate_numlock = enable
#keystate_capslock = enable
#keystate_scrolllock= enable
# Examples of commands:
"xbindkeys_show"
control+shift + q
Run Code Online (Sandbox Code Playgroud)
以 开头的每一行#
都是注释,不会被 读取或运行xbindkeys
。
到目前为止,唯一没有注释掉的行是:
"xbindkeys_show"
control+shift + q
Run Code Online (Sandbox Code Playgroud)
此摘录显示了xbindkeys
命令的基本语法:
"Command to run (in quotes)"
key to associate with command (no quotes)
Run Code Online (Sandbox Code Playgroud)
正如你所看到的:
"xbindkeys_show"
control+shift + q
Run Code Online (Sandbox Code Playgroud)
xbindkeys_show
按Ctrl+ Shift+时运行命令q。
现在让我们尝试绑定几个键。我建议清除整个默认文件,使其为空白。它包含您可能不想要的预设键绑定。
现在假设您想使用Ctrl+b打开浏览器。首先,你需要知道的名称或键符的Ctrl+b是。如前所述,您可以使用xbindkeys -k
来查找一个或多个键的名称,但还有一种更简单的方法。对于像Ctrl+这样的简单组合,b您可以使用:
Control+b
Run Code Online (Sandbox Code Playgroud)
是不是容易多了!
现在找到您最喜欢的浏览器的命令:
对于火狐: firefox
对于铬: chromium-browser
对于歌剧: opera
还记得之前的语法吗?xbindkeys
按Ctrl+时启动 Firefox(或您喜欢的其他浏览器)的命令b是:
"firefox"
Control+b
Run Code Online (Sandbox Code Playgroud)
现在把它放在你的配置文件中并保存它。现在您可能会注意到您的命令还不起作用,那是因为xbindkeys
没有运行。要启动它,只需xbindkeys
从终端运行。你的Ctrl+b现在应该启动你的浏览器了!
如果您希望键盘上的一个键调用键盘上的另一个键,您将需要一个额外的软件,因为xbindkeys
它本身不支持此功能。我知道我们可以使用的两个程序,xdotool
以及xte
. 我更喜欢xte
所以我要使用它。
安装它:
sudo apt-get install xautomation
Run Code Online (Sandbox Code Playgroud)
的语法xte
是这样的:
xte 'command key/mousebutton/xyCoordinates'
Run Code Online (Sandbox Code Playgroud)
例子:
要调用单个按键: xte 'key keyName'
调用组合键: xte 'keydown keyName' 'keydown secondKeyName' 'keyup keyName' 'keyup secondKeyName
调用鼠标按钮:( xte 'mouseclick buttonNumber'
稍后我们将讨论查找按钮编号)
要移动鼠标: xte 'mousemove xCoordinate yCoordinate'
和更多!读man xte
现在您知道了模拟按键的命令,您可以从xbindkeys
脚本中调用它,如下所示:
"xte 'key b'"
Control+b
Run Code Online (Sandbox Code Playgroud)
正如您可能猜到的,xte 'key b'
当我们按下Ctrl+ 时b,这会调用,这会在b您当前正在处理的任何文档中输入 a 。
但是我一点需要注意的是,xbindkeys
和xte
并不总是很好地工作在一起。有时您必须完全同时按下按键才能获得输出,有时它工作得很好。这可能与系统配置和/或硬件有关,也可能无关。我不确定。有关将密钥绑定到其他密钥的更可靠方法,请参阅maggotbrain 的答案。
您还可以使用xbindkeys
将鼠标按钮绑定到命令(以及键盘快捷键,请参见上文)。您现在应该熟悉鼠标按钮的基本格式:
" [command to run] "
b:n
Run Code Online (Sandbox Code Playgroud)
[command to run]
您要运行的命令在哪里以及n
要用于该命令的鼠标按钮的编号。
如果您不知道鼠标按钮的编号,您可以使用它xev
来找出它是什么:
xev | grep button
Run Code Online (Sandbox Code Playgroud)
输出将是这样的:
user@host:~$ xev | grep button
state 0x10, button 1, same_screen YES
state 0x110, button 1, same_screen YES
state 0x10, button 2, same_screen YES
state 0x210, button 2, same_screen YES
state 0x10, button 3, same_screen YES
state 0x410, button 3, same_screen YES
Run Code Online (Sandbox Code Playgroud)
当我按下每个鼠标按钮时。
例如:
" firefox "
b:2
Run Code Online (Sandbox Code Playgroud)
当我按下鼠标中键时启动 Firefox。
Kev*_*wen 71
使用xev
和更改键绑定xmodmap
。
默认情况下,这两个命令行应用程序都可用,因此无需安装其他软件。
Xev “创建一个窗口,然后要求 X 服务器在窗口发生任何事情时向它发送事件(例如它被移动、调整大小、输入、点击等)。” xev 手册页
xmodmap是“用于编辑和显示客户端应用程序用于将事件键代码转换为键符的键盘修饰符映射和键映射表的程序”。 xmodmap 手册页
下面的示例将Caps_Lock键重新映射到键的行为Esc(许多 vi/vim 用户发现这是一个有用的键盘映射)。
xev
从终端窗口( Ctrl- Alt- t)启动应用程序。像 grep 这样的输出可能很有用 xev | grep -i key
应用程序将初始化,显示多行,并启动一个带框的小窗口。保持xev
应用程序窗口处于焦点,然后按下您希望使用其属性/行为的键。
在终端窗口中,您将看到几行输出。记下返回的第 3 行。这将包含您希望移动到另一个键的属性的名称。
KeyPress event, serial 32, synthetic NO, window 0x3e00001,
root 0x256, subw 0x0, time 16245388, (616,73), root:(1487,535),
state 0x10, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
XLookupString gives 1 bytes: (1b) ""
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Esckey(keycode 9) 使用名称"Escape"。
这次我们正在寻找正在使用的键码Caps Lock。
再次注意第三行:
KeyRelease event, serial 32, synthetic NO, window 0x4c00001,
root 0x256, subw 0x0, time 94702774, (862,151), root:(1733,613),
state 0x10, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
XKeysymToKeycode returns keycode: 9
XLookupString gives 1 bytes: (1b) ""
Run Code Online (Sandbox Code Playgroud)
现在我们已经获得了我们希望更改的键的信息xev
,我们将用于xmodmap
修改键映射。从命令端子(Ctrl+ Alt+ t),运行下面的命令:
此命令修改Caps Lock使用与Esc
xmodmap -e "keycode 66 = Escape"
Run Code Online (Sandbox Code Playgroud)
您也可以将它重新映射到基本上任何键,这里它被重新映射到p
键
xmodmap -e "keycode 66 = p"
Run Code Online (Sandbox Code Playgroud)
此选项将当前键映射表作为表达式打印到文件中 ~/.Xmodmap
xmodmap -pke > ~/.Xmodmap
Run Code Online (Sandbox Code Playgroud)
使用以下命令激活更改(仅针对此登录会话):
xmodmap ~/.Xmodmap
Run Code Online (Sandbox Code Playgroud)
使更改在重新启动时保持不变:
如果它不存在,请在您的主文件夹中创建一个名为.xinitrc
.
touch ~/.xinitrc
Run Code Online (Sandbox Code Playgroud)
将以下行放在文件中并保存文件:
xmodmap ~/.Xmodmap
Run Code Online (Sandbox Code Playgroud)
(例如Num Lock)
获取修饰键的键映射表(此处缩写输出)
$ xmodmap -pm
shift Shift_L (0x32), Shift_R (0x3e)
mod2 Num_Lock (0x4d)
Run Code Online (Sandbox Code Playgroud)
例如,如果您想将数字键盘上Del/Period键上的句点行为更改为 逗号,请使用以下命令:
xmodmap -e "keycode 91 mod2 = KP_Delete comma"
Run Code Online (Sandbox Code Playgroud)
请注意,这是使用mod2
键映射来更改Num Lock按下修饰符时的键行为。其语法是:
xmodmap -e "<KEYCODE> <MODIFIER> = <behaviour> <behaviour_with_modifier>"
Run Code Online (Sandbox Code Playgroud)
Lui*_*ado 46
默认情况下(这只是为了补充 Seth 的优秀答案),Ubuntu(在本例中我使用的是 16.04)在系统设置中默认有 2 个类别:
要转到系统设置,请在右上角单击齿轮图标:
然后选择系统设置:
在这里您会找到 2 个选项,可以将您发送到快捷方式创建部分。
如果您选择文本输入,您将必须选择右下角的键盘设置链接,这会将您直接发送到快捷方式选项。
如果选择键盘选项,则必须单击快捷方式选项卡
到达快捷方式选项卡后,您将选择左侧列表底部的自定义快捷方式:
然后单击底部的加号以开始创建您自己的快捷方式:
从那时起,只需添加快捷方式的名称(不要混淆快捷方式的名称,因为您将执行的实际命令的名称)。在下面的命令字段中,您将放置将为此快捷方式执行的命令。在以下示例中,我将快捷方式命名为“Sublime Text 3”以了解该特定快捷方式与什么相关。在命令字段上,我添加了实际命令,即subl
.
您将在屏幕上看到以下内容,表明由于快捷方式尚未分配按键或组合键,因此默认情况下已禁用:
然后,我们将单击“已禁用”消息以向其添加组合键:
在这一部分,我给你的组合键SHIFT+ CTRL+ S,这样当我按下这个组合将打开崇高文本应用程序。
之后,您可以通过按相应的组合键并查看应用程序打开来简单地测试您的组合:
注意:对于像杀死 X 服务器这样的特殊组合,我建议访问以下链接:如何启用 Ctrl-Alt-Backspace 来杀死 X 服务器?
Rad*_*anu 22
转到System Settings → Keboard,选择Shortcuts选项卡并为您的浏览器添加一个新的自定义快捷方式。如果您的默认浏览器是 Firefox,请firefox
在命令字段中使用for;如果您的默认浏览器是 Firefox,请使用chromium-browser
,依此类推:
csc*_*ney 20
您可以通过从软件中心安装AutoKey来创建复杂的(多键)键盘快捷键。与 xmodmap 不同,AutoKey 不会重新绑定键盘上的实际键;它在后台运行并拦截您定义的键盘快捷键,然后将模拟按键发送到您的应用程序。
第一次启动 AutoKey 时,它会在后台启动服务(通知图标没有更新统一,所以没有视觉指示)。运行后,您可以通过再次运行启动器来调出配置界面:
现在打开“编辑”>“首选项”并选择“登录时自动启动 AutoKey”以确保您的快捷方式在您登录时都有效。
在文本框中键入要映射到的键。
+
在它们之间放置一个(例如,<ctrl>+c
将在大多数应用程序中复制;<ctrl>+c<ctrl>+n<ctrl>+v
将创建一个包含选择的新文档;<shift>+ubuntu
将键入文本“Ubuntu”)按“热键”旁边的“设置”按钮。这将打开一个对话框,允许您确定要从中映射的组合键:
选择文件 > 保存
一个完整的配置示例(<enter>
当您按下时发送<ctrl>+m
)如下所示:
Mit*_*tch 16
尝试这个:
安装一个名为 XKeyCaps 的程序。要安装,只需按键盘上的Ctrl+ Alt+T打开终端。当它打开时,运行以下命令:
sudo apt-get install xkeycaps
Run Code Online (Sandbox Code Playgroud)
安装后,您可以在提示符下执行 xkeycaps 来运行该程序。运行后,选择正确的键盘布局,然后单击确定
然后当你在屏幕上看到键盘时,右键单击你想要的键,在你的情况下是S,然后选择交换键。
确保将下面的行添加到您的会话中,以便在您每次启动时自动启动。
xmodmap ~/.xmodmap-`uname-n`
Run Code Online (Sandbox Code Playgroud)
资料来源:UFM ytsejam1138
如果您只想重新映射键,其他答案都很棒。
但是,还有另一种方法来处理它。AutoKey是一个键盘宏处理器,它允许您将任何键/修饰符组合与脚本相关联,该脚本几乎可以执行您可以通过键盘执行的任何操作等等。
AutoKey 有一个脚本记录器和一种输入基本键序列的简单方法,但它的脚本是用 Python 编写的,几乎可以执行任何您可以编写的代码。
使用它的最简单方法是让它将击键发送到您的应用程序/桌面。以这种方式使用时,系统/应用程序无法判断不是您键入的内容,因此不需要 API 或其他接口,它们只执行“您”键入的操作。
AutoKey 还可以处理短语。当您键入触发字符串时,它可以替换该字符串的新文本(立即或在您键入换行符或制表符等分隔符之后)。
它还具有窗口过滤器,因此您可以将特定短语或脚本限制为仅在特定类型的窗口中运行(例如标题中包含 Mozilla 的窗口,因此它们只能在 Firefox 或 Thunderbird 中使用)。
AutoKey 目前有 Gtk 和 Qt 版本。
编辑:
用户论坛 活跃的用户论坛。
wiki 中有许多示例脚本。因为它主要是一个有很多选项的 GUI 应用程序,所以示例需要大量的屏幕截图和整篇文章。
我定义了一个短语,这样当我输入“ Jmail! ”时,它会立即用我相当长的电子邮件地址替换它。
我编写了一个通过键入触发的脚本Ctrl-P该脚本仅在标题中包含“Mozilla”的窗口中有效。键入Ctrl- 调P出(Firefox 或 Thunderbird)打印对话框,选择打印到文件,然后在我的打印队列中填写下一个可用打印文件的名称(我将它们编号为 01、02...,然后脚本读取队列目录,找到最后一个文件号并将其增加 1)。我将它与我的双面打印仿真软件 ( duplexpr ) 一起使用,以消除大量的按键和鼠标移动。
我见过一些来自游戏玩家的其他脚本,这些脚本让他们可以非常快速地访问有关他们的角色和资源的信息,以便他们可以专注于行动。
xkb
是 X 键盘扩展。它负责将键盘的键映射到它们指定的功能。
xkb
符号可以在/usr/share/X11/xkb/symbols/
. 修饰键映射在/usr/share/X11/xkb/symbols/pc
.
比如说,我需要切换Caps Lock
和Left Control
键的功能。pc
文件需要进行以下更改:
key <CAPS> { [ Control_L ] };
key <LCTL> { [ Caps_Lock ] };
Run Code Online (Sandbox Code Playgroud)
为了应用新的映射,您需要从以下位置清除xkb
的缓存/var/lib/xkb
:
rm -rf /var/lib/xkb/*
Run Code Online (Sandbox Code Playgroud)
现在,只需重新启动 X 会话即可。
来源:https : //radu.cotescu.com/remapping-keys-in-ubuntu-14.04/
编辑:ls
在symbols
目录内
做一个:
af cm gn kz nec_vndr sk
al cn gr la ng sn
altwin compose group latam nl sony_vndr
am ctrl hp_vndr latin no srvr_ctrl
apl cz hr level3 nokia_vndr sun_vndr
ara de hu level5 np sy
at digital_vndr ie lk olpc terminate
az dk il lt pc th
ba ee in lv ph tj
bd empty inet ma pk tm
be epo iq macintosh_vndr pl tr
bg es ir mao pt tw
br et is md ro typo
brai eurosign it me rs tz
bt fi jp mk ru ua
bw fo ke ml rupeesign us
by fr keypad mm se uz
ca fujitsu_vndr kg mn sgi_vndr vn
capslock gb kh mt sharp_vndr xfree68_vndr
cd ge kpdl mv shift za
ch gh kr nbsp si
Run Code Online (Sandbox Code Playgroud)
文件内的映射ru
基于俄语标准键盘。该macintosh_vndr
文件夹包含 Apple 键盘的映射。简而言之,这种方法非常通用。继续玩吧:)
使用键盘按键作为鼠标按钮
您可能希望将键盘键映射到鼠标按钮。如果您想使用键盘键单击(如果您的 macbook 或触控板按钮不好,则很有用),那么您可以执行以下操作。
安装一些实用程序:
sudo apt-get install x11-utils xkbset x11-xserver-utils
Run Code Online (Sandbox Code Playgroud)找到要映射的键的键码:
xev | grep keycode
在终端按感兴趣的键,会出现这样的一行:
state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
Run Code Online (Sandbox Code Playgroud)使用键码,重新映射键以执行与鼠标左键相同的操作:
xkbset m
xmodmap -e "keycode 64 = Pointer_Button1"
Pointer_Button3
是鼠标右键,Pointer_Button2
是中间。
归档时间: |
|
查看次数: |
195249 次 |
最近记录: |