Это интересный вызов, и я согласен с тем, что xinput не совсем подходит для этого. Я потратил некоторое время на изучение возможностей xmodmap и настолько разочарованно приблизился к достижению того, что вы хотите сделать ... фактически не успев туда добраться.
Используя xmodmap, можно назначить parenleft как сдвинутый символ клавиши на клавише left-shift:
xmodmap -e 'keysym Shift_L = Shift_L parenleft Shift_L parenleft'
какая сорта работает, по крайней мере, при тестировании на моей коробке Fedora 17, но не в удовлетворительной форме. Я обнаружил, что с этим отображением клавиша Shift все еще функционировала нормально и не создавала никаких поддельных паренов, но (разочаровывающе) также не давала надежных паренотов. По какой-то причине ключ не может надежно изменить себя, что нарушает его смещенное назначение ... изначально. По какой-то причине, несколько раз подряд ударив влево-сдвиг, в конечном итоге он начнет производить левую часть, но только после четвертого или пятого нажатия.
Одно поведение я заметил, однако, что вы могли бы быть в состоянии работать с как "достаточно близко" аналог: я обнаружил , что после отображения parenleft и parenright на Shift_L и Shift_R, я мог надежно ввести скобки путем "прокатки" по обе клавиши сдвига - другими словами, с этим отображением:
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, а затем отпускание обоих, выведет правую или левую в другом направлении. (Конечно, пареневские сопоставления можно поменять местами; я не мог точно решить, какой путь будет более "естественным".)
Это было так близко, как я пришел к достижению именно того поведения, которое вы ищете; не похоже, что это возможно, используя только xmodmap.
Я был наполовину убежден, что это просто невозможно, но я понял, что есть по крайней мере один ключ, который функционирует именно так, как вы описываете: ключ Super ("Windows"). В Gnome Shell это клавиша-модификатор (mod4), которая производит другой эффект (вызывает обзор), когда нажимается одна. Таким образом, по крайней мере, теоретически, может быть возможно реализовать желаемую перегрузку клавиши Shift таким же образом.
...Но я абсолютно не представляю, как это будет сделано, или насколько агрессивно будет увязать в необходимой обработке каждый раз, когда вы нажимаете клавишу Shift. :-)