如何在Ubuntu中使Ctrl + Alt像Alt gr一样工作?


11

我最近在笔记本电脑上切换到Ubuntu,几乎让我切换回Windows的一件事是,我无法使Ctrl+ Alt像Alt gr那样工作。

我已经编程了几年了,例如,我习惯按ctrl+ alt+ 来制作符号“ $” 4。在Ubuntu中,我不得不使用“ Alt gr + 4”巫婆,这简直让我发疯……

有解决办法吗?


1
您是否尝试过使用composekey的映射? help.ubuntu.com/community/ComposeKey
蒂姆·肯尼迪

您可以使用xmodmap命令来执行此操作。检查此askubuntu.com/questions/5095/typing-using-key-combinations
Bichoy 2013年

尝试使用xmodmap,该文件可在ubuntu的x11-xserver-utils软件包中找到。它允许您重新映射任何组合键。
沃伦(Warren)

@elitasson如果您找到自己问题的答案,请把它作为一个单独的答案。
伯恩哈德

@Bernhard不,您不能使用xmodmap做到这一点。它不支持将Ctrl + Alt组合键设置为不同的修饰符。但是我认为xkb可以。
吉尔斯(Gillles)“所以-别再邪恶了”

Answers:


3

您可以添加全局快捷方式来编写特殊字符。我经常将它用于Ubuntu的德语键盘布局(在Windows上是开箱即用的)。

我添加了以下快捷方式:

Shift+ Enter+ 7写信{

Shift+ Enter+ 0写信}

Shift+ Enter+ 8写信[

Shift+ Enter+ 9写信]

要添加这些快捷方式,您将需要xbindkeysxvkbd

sudo apt-get install xbindkeys xvkbd

然后编辑配置文件:

vim ~/.xbindkeysrc

并添加以下行(根据需要编辑它们):

"xvkbd -xsendevent -text '{'"
    m:0xc + c:16
    Control+Alt + 7

"xvkbd -xsendevent -text '['"
    m:0xc + c:17
    Control+Alt + 8

"xvkbd -xsendevent -text ']'"
    m:0xc + c:18
    Control+Alt + 9

"xvkbd -xsendevent -text '}'"
    m:0xc + c:19
    Control+Alt + 0

"xvkbd -xsendevent -text '\[backslash]'"
    m:0xc + c:20
    Control+Alt + ssharp

"xvkbd -xsendevent -text '\[asciitilde]'"
    m:0xc + c:35
    Control+Alt + plus

然后重新加载xbindkeys:

xbindkeys -f ~/.xbindkeysrc

感谢Whiz共享此内容(http://forum.ubuntuusers.de/topic/strg-%2B-alt-alt-gr-wie-in-windows/)。


1
您能解释一下m:0xc + c:XX行吗?
Elitasson

1
我知道这是一个古老的问题和答案,但仅适用于那些希望添加更多字符的人,例如| 或@或€:c:XX据我所知,所用的关键代码不是通用的,因此您不会碰到这个。但是,您可以通过在命令行中安装并执行“ xev”来在本地找到关键代码。它会打印您所有的键盘和鼠标操作,因此您必须稍微滚动一下才能找到“您的”字符。
Nano Miratus

1
例如,在运行xev时按<(配置|),将输出以下内容:所需KeyRelease event, serial 40, synthetic NO, window 0x4c00001, root 0x7e, subw 0x0, time 35363548, (135,60), root:(903,472), state 0x0, keycode 94 (keysym 0x3c, less), same_screen YES, XLookupString gives 1 bytes: (3c) "<" XFilterEvent returns: False的数字始终在“键码”之后的第三行。所以在这种情况下,94
纳米Miratus

2

在尝试使它无法与xbindkeys和xvkbd / xte结合使用后(我永远无法使某些字符{,[,],},\等正常工作,也许是因为我使用了斯堪的纳维亚的键盘布局),我终于找到了一个简单实用的解决方案:Autokey。这是使其正常工作的确切说明:

  1. 通过Ubuntu软件(我使用的是GTK版本,而不是KDE)或通过以下方式安装Autokey:“ sudo apt-get install autokey-gtk”。
  2. 每个键配置一个脚本,例如,{使用此代码:keyboard.send_keys("<alt_gr>+7")并将热键设置为Ctrl + Alt + 7(首先将热键设置为7,然后添加Ctrl和Alt作为修饰符)。这至少对最重要的代码编写键有效:{[]}。
  3. 将自动密钥添加到“启动应用程序”(搜索“开始”以找到它),然后以“自动密钥”作为命令添加程序。

此解决方案适用于当前X会话中运行的任何内容(我认为),但是如果您使用Ctrl + Alt +(F2-F6)启动新的终端会话,则该解决方案将不起作用。


1

尽管这仍然无法回答您的问题,但我发现这是比其他答案更容易的解决方案。

要使R-ALT工作类似AltGr,您可以将以下行添加到您的~/.xinitrc

setxkbmap -option lv3:ralt_switch

可以找到其他转换到第三级的方法(通常使用AltGr密钥来实现),并且可以在中定义新的方法/usr/share/X11/xkb/symbols/level3


1

这是我所做的使L-Alt键动作与键完全相同的操作Altgr。我没有尝试CtrlAlt钥匙

它包含修改level3文件

在终端中,更改目录:

cd /usr/share/X11/xkb/symbols

制作一个level3文件的副本:

sudo cp level3 level3.old

使用任何文本编辑器编辑level3:

sudo gedit level3 

您应该找到一个像这样的块:

  key <RALT> {
    type[Group1]="ONE_LEVEL",
    symbols[Group1] = [ ISO_Level3_Shift ]
    };
  modifier_map Mod5   { ISO_Level3_Shift };

使用LALT(左alt)而不是RALT(altgr)添加块的副本:

  key <LALT> {
    type[Group1]="ONE_LEVEL",
    symbols[Group1] = [ ISO_Level3_Shift ]
    };
  modifier_map Mod5   { ISO_Level3_Shift };

现在,应该有另外3个以 key <RALT>

对他们做同样的事情。

保存并退出。


0

我在编写代码时仅使用特殊符号,因此设法解决了这一问题,即Sublime Text。

在首选项->键绑定-用户中

插入以下内容:

[
{ "keys": ["ctrl+alt+2"], "command": "insert", "args": {"characters": "@"} },
{ "keys": ["ctrl+alt+3"], "command": "insert", "args": {"characters": "£"} },
{ "keys": ["ctrl+alt+4"], "command": "insert", "args": {"characters": "$"} },
{ "keys": ["ctrl+alt+5"], "command": "insert", "args": {"characters": "€"} },
{ "keys": ["ctrl+alt+7"], "command": "insert", "args": {"characters": "{"} },
{ "keys": ["ctrl+alt+8"], "command": "insert", "args": {"characters": "["} },
{ "keys": ["ctrl+alt+9"], "command": "insert", "args": {"characters": "]"} },
{ "keys": ["ctrl+alt+0"], "command": "insert", "args": {"characters": "}"} },
{ "keys": ["ctrl+alt++"], "command": "insert", "args": {"characters": "\\"} },
{ "keys": ["ctrl+alt+<"], "command": "insert", "args": {"characters": "|"} }

]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.