มันเป็นความท้าทายที่น่าสนใจและฉันยอมรับสิ่งที่ xinput ไม่เหมาะที่จะเป็น ฉันใช้เวลาในการเล่นกับความสามารถของ xmodmap และเข้าใกล้ความผิดหวังอย่างมากที่จะบรรลุสิ่งที่คุณต้องการ ... โดยไม่ต้องจัดการให้ได้
การใช้ xmodmap เป็นไปได้ที่จะกำหนด parenleft เป็น keysymbol ที่ถูกเลื่อนบนคีย์ left-shift:
xmodmap -e 'keysym Shift_L = Shift_L parenleft Shift_L parenleft'
ซึ่งsorta ใช้งานได้อย่างน้อยในการทดสอบกับกล่อง Fedora 17 ของฉัน แต่ไม่ใช่ในลักษณะที่น่าพอใจ ฉันพบว่าเมื่อใช้การแมปนี้แทนปุ่ม Shift ยังคงทำงานได้ตามปกติและไม่ทำให้การเลียนแบบปลอมแปลงใด ๆ (แต่น่าผิดหวัง) มันไม่ได้สร้าง parens ซ้ายอย่างน่าเชื่อถือ ไม่ว่าด้วยเหตุผลใดก็ตามกุญแจไม่ปรากฏขึ้นเพื่อแก้ไขตัวเองอย่างน่าเชื่อถือซึ่งทำให้การบ้านที่ได้รับมอบหมายเปลี่ยนไป ... ในขั้นต้น ไม่ว่าจะด้วยเหตุผลใดก็ตามการกดปุ่มซ้าย - ขวาสองสามครั้งติดต่อกันในที่สุดก็จะทำให้เกิดการเริ่มต้นสร้าง parens ซ้าย แต่หลังจากกดครั้งที่สี่หรือห้า
พฤติกรรมหนึ่งที่ผมได้แจ้งให้ทราบ แต่ที่คุณอาจจะสามารถที่จะทำงานกับเป็น "ใกล้พอ" อะนาล็อก: ผมพบว่าหลังจากที่ parenleft การทำแผนที่และ parenright บน Shift_L และ Shift_R ผมน่าเชื่อถือสามารถพิมพ์ parens โดย "รีด" ทั่วปุ่ม shift ทั้ง - กล่าวอีกนัยหนึ่งด้วยการทำแผนที่นี้:
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 :-)