问题描述
我在Mac上的VirtualBox中使用Ubuntu。当我频繁切换时,我想使用相同的快捷方式。拜托,有人知道如何在Ubuntu上拥有与Mac上相同的快捷方式吗?具体来说,我想复制,粘贴,全选… …与Cmd + C,Cmd + V,Cmd + A,…(即使在终端中-无需Ctrl + Shift,仅按Ctrl)一起使用。
我试图将键盘布局更改为Apple笔记本电脑,但这没有帮助。
最佳方案
无需使用xbindkeys
在Ubuntu上实现OSX-like键盘映射。这是一个内置选项:
-
进入您的Ubuntu设置
-
导航到键盘→键盘布局设置
-
添加英语(Macintosh)
次佳方案
您不能添加自定义快捷方式吗?如果这不可能或不起作用,则可能需要更改vmbox的键绑定。您需要执行以下操作:
安装xbindkeys
sudo apt-get install xbindkeys
Xbindkeys是一个非常通用的程序,可让您非常轻松地重新映射键。它使用一个配置文件(我的默认文件位于您的主目录中)将按键绑定更改为某些命令。
要创建默认配置文件,请使用以下命令:
xbindkeys --defaults
打印默认配置文件。因此,如果要创建包含默认值的文件,则可以使用:
xbindkeys --defaults > $HOME/.xbindkeysrc
它将默认值打印到位于主目录中名为.xbindkeysrc的隐藏文件中。
现在要实际更改键的绑定,我们首先需要知道这些键的名称或键符号是什么。 xbindkeys允许我们使用-k句柄查找键或组合键的名称。跑步:
xbindkeys -k
现在按ctrl(的cmd)并检查输出
尝试按ctrl + c(使用此解释的第二部分在终端中禁用该快捷方式后)
它将告诉您按键/组合键的名称。
现在我们需要告诉Linux在按下ctrl时调用cmd。
为此,我们将需要额外的软件,因为xbindkeys本身并不支持此功能。我知道两个可以使用的程序xdotool和xte。我更喜欢xte,所以我将使用它。
安装它:
sudo apt-get install xautomation
(要呼叫一个按键,请按:xte 'key keyName'
呼叫组合键:xte 'keydown keyName' 'keydown secondKeyName' 'keyup keyName' 'keyup secondKeyName
有关更多信息,您可以阅读手册man xte
)
让我们打开您之前创建的配置文件:(使用xbindkeys --defaults > $HOME/.xbindkeysrc
创建的配置文件)
gedit .xbindkeysrc
您将获得如下内容:
#
# 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脚本中调用它,如下所示:
“ xte ‘ctrl’” Cmd(或类似的内容取决于xbindkeys给您的名称)
将此添加到您的xbindkeys脚本中并保存。
您会注意到它尚不起作用。这是因为xbindkeys尚未运行。使用以下命令启动它。
xbindkeys
您的命令现在应该可以使用了。如果它不起作用,您可能想尝试向key-combinations添加命令,例如复制和粘贴。如果那也不起作用,那么可以选择另一种方法,但这需要大量的写作。您也可以尝试使用xmodmap或xkeycaps。
我想指出xbindkeys和xte并非总是能很好地协同工作。
至于您的终端快捷方式:您可以通过打开终端并单击顶部栏中的“编辑”来更改它们。然后,单击键盘快捷键,然后将标题”edit”下的复制和粘贴值更改为ctrl(或在您的情况下为cmd)+ c和ctrl + v
第三种方案
在搜索其他问题时,我发现此工具可将Ctrl映射到Macbook键盘CMD Left上,以执行CMD + C或CMD + V或其他操作:
安装gnome-tweaks应用程序:
sudo apt-get install gnome-tweaks
打开应用程序Applications -> Gnome Tweaks
并将CTRL映射到WIN(与Mac中的CMD相同),执行以下操作:
-
键盘鼠标
-
附加布局选项(左超级)
-
Alt /Win键行为
-
Ctrl映射到Win和通常的Ctrl键
使用ubuntu-18 VM在OSX VirtualBox中使用CMD + C or CMD + V
。
第四种方案
对于任何使用较新版本的Ubuntu苦苦解决此问题的人,这是一个更新的答案。
我刚刚通过VirtualBox安装了Ubuntu 16.04.1,但无法获得与MacBook匹配的键盘设置。
这是我为解决此问题所做的工作:
-
导航到系统设置。
-
选择文本输入(即不是键盘)。
-
在标题为“要使用的输入源”的列表下方:有一个加号和一个减号-单击加号。
-
在您需要的键盘布局中的“选择输入源类型”下的文本框中(在我的情况下,我选择英语(英国,macintosh)。
-
使用向上箭头将其设置为Ubuntu上的默认键盘布局。
-
删除其他键盘布局。直到我删除了其他布局,这些更改才生效。
第五种方案
我使用的是Ubuntu 16.04,VirtualBox 5.1.22,但这些答案对我都不起作用-不幸的是,其中包括David Brower’s。
这是使我的左OSX Command键正常工作的方法(永久!):
-
首先,您需要确保VirtualBox不会使用Left⌘作为主机密钥
-
在VM窗口的顶部菜单栏中,选择
Input > Keyboard > Keyboard Settings..
-
在设置列表中,找到“主机键组合”,然后将快捷方式更改为除Left以外的其他方式(我刚使用过Right,因为我从未使用过)。
-
-
现在,您可以肯定在VM环境中使用Left⌘,使用XKB重新映射键:
-
打开并(仔细)编辑:
/usr/share/X11/xkb/symbols/pc
-
我只是简单地交换了
<LCTL>
和<LWIN>
,所以看起来像这样: -
key <LCTL> { [ Super_L ] };
-
key <LWIN> { [ Control_L ] };
-
-
现在,从xkb缓存中清除旧的映射:
-
rm -rf /var/lib/xkb/*
-
-
重新启动ubuntu,以使更改生效。
警告词:除非您真的知道自己在做什么,否则我将避免通过xkb一次进行多个更改,因为同时错误地映射了几个键可能真是令人头疼!
完整记入Radu Cotescu的xkb重新映射说明-适用于ubuntu 14.04,但是适用于ubuntu 16.04。