这是一个有趣的挑战,我同意xinput似乎并不十分适合的挑战。我花了一些时间来摆弄xmodmap的功能,并且非常沮丧地接近实现您想做的事情...而实际上并没有设法到达那里。
使用xmodmap,可以将parenleft分配为左移键上的移位键符号:
xmodmap -e 'keysym Shift_L = Shift_L parenleft Shift_L parenleft'
至少在我的Fedora 17盒子上进行测试时,这种排序方式是可行的,但效果并不令人满意。我发现,有了此映射,shift键仍然可以正常工作,并且没有渲染任何假的parens,但是(令人沮丧的)它也不能可靠地产生左parens。无论出于何种原因,该密钥似乎都无法可靠地对其自身进行修改,这最初会中断其转移的分配。无论出于何种原因,连续几次左移都会最终导致它开始产生左括号,但仅在第四或第五次按下之后。
但是,我确实注意到一种行为,您也许可以作为“足够接近”的类比使用:我发现将parenleft和parenright映射到Shift_L和Shift_R之后,我可以通过在两个Shift键上“滚动”来可靠地键入parens —换句话说,使用此映射:
xmodmap -e 'keysym Shift_L = Shift_L parenleft Shift_L parenleft'
xmodmap -e 'keysym Shift_R = Shift_R parenright Shift_R parenright'
先按Shift_L,再按Shift_R,然后再释放它们,将在另一个方向上输出右方或左方。(当然可以颠倒paren映射;我无法完全确定哪种方式更“自然”。)
这与我要实现所需的确切行为差不多。似乎不可能单独使用xmodmap。
我半信半疑地说,这简直是不可能的,期间,但后来我意识到至少有一个按键可以完全按照您的描述工作:Super(“ Windows”)按键。在Gnome Shell下,它是一个修饰键(mod4),当单独按下该键时会产生不同的效果(触发“概述”)。因此,至少在理论上,有可能以相同的方式实现所需的Shift键重载。
...但是,我绝对不知道该怎么做,或者每次按下Shift键时陷入必要的处理过程都会带来多大的侵害。:-)