Это интересный вызов, и я согласен с тем, что 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. :-)