วิธีการเปลี่ยนแหล่งอินพุตเป็นภาษาอื่นด้วยทางลัด (รวมคีย์เดียวเท่านั้น)


1

ฉันต้องการใช้สี่ภาษาใน X ระบบ OS ของฉัน (อังกฤษ, สเปน, จีนและญี่ปุ่น) และฉันรู้ว่าฉันสามารถเปลี่ยนภาษาที่มี+ Spaceอย่างไรก็ตามฉันมีความเกลียดชังทางพยาธิวิทยาสำหรับการสลับกับมันเพราะมันต้องให้ฉันเลือกจากตัวเลือกมากมาย! ฉันรู้ว่าฉันสามารถเปลี่ยนจากแถบเมนูด้านขวาของบาร์ แต่มันน่าขยะแขยงกว่า+ Spaceโซลูชัน

ดังนั้นฉันต้องการเปลี่ยนด้วยทางลัดที่ง่ายกว่าเช่นนี้

  • สวิตช์ซ้ายเป็นภาษาอังกฤษ
  • ขวาสวิทช์เป็นภาษาสเปน
  • ซ้าย+ ซ้าย+ Cเปลี่ยนเป็นภาษาจีน
  • right + right + Cเปลี่ยนเป็นภาษาญี่ปุ่น

ฉันพยายามที่จะใช้Karabiner(สืบทอดมาจากKeyRemap4MacBook) แต่มันไม่ทำงานในความพยายามครั้งแรกในภาษาจีนซึ่งเมื่อฉันเปลี่ยนเป็นภาษาจีนมันยังคงเป็นภาษาอังกฤษ (ไอคอนแหล่งอินพุตในการเปลี่ยนแปลงแถบเมนู แต่แป้นพิมพ์ไม่ทำงาน ) แต่ด้วยเหตุผลบางอย่างถ้าฉันเปลี่ยนจากภาษาอังกฤษเป็นภาษาจีนเป็นภาษาอังกฤษ (สองครั้ง) แป้นคีย์บอร์ดจีนก็ใช้งานได้ในที่สุด

Karabinerดังนั้นผมจึงไม่ชอบความคิดของการใช้ ดังนั้นวิธีที่ดีกว่าในการเปลี่ยนแหล่งอินพุตคืออะไร

คำตอบ:


3

ฉันพบปัญหากับจีนและญี่ปุ่น (ไอคอนบนแถบเมนูเปลี่ยนไป แต่แหล่งอินพุตไม่ได้เปลี่ยนจริงจนกว่าฉันจะเปลี่ยนเป็นแหล่งอินพุตอื่นและย้อนกลับ) เป็นข้อผิดพลาดที่รู้จักกันดีตามการโพสต์ที่รายการส่งเมลของ Karabiner :

เป็นหนึ่งในข้อบกพร่องที่น่ารำคาญที่สุดของ OS X

การเปลี่ยนแหล่งอินพุต CJK โดยตรงจากโปรแกรมนั้นไม่ได้รับการจัดการอย่างเหมาะสม

ดังนั้นคุณต้องมีขั้นตอนดังต่อไปนี้

ขั้นที่ 1:
เปิดใช้งาน "เลือกแหล่งถัดไปในเมนูป้อนข้อมูล" (command-option-space) ในการตั้งค่าระบบ> คีย์บอร์ด> ทางลัด

ขั้นที่ 2:
เปลี่ยนแหล่งอินพุตโดยส่ง command-option-space

<autogen>
  __KeyToKey__
  KeyCode::K, ModifierFlag::OPTION_L,
  KeyCode::VK_CHANGE_INPUTMODE_US,
  KeyCode::VK_WAIT_100MS,
  KeyCode::SPACE, ModifierFlag::COMMAND_R | ModifierFlag::OPTION_L,
  <!-- adjust wait for your machine -->
  KeyCode::VK_WAIT_10MS,
  KeyCode::VK_WAIT_10MS,
  KeyCode::VK_WAIT_10MS,
  KeyCode::SPACE, ModifierFlag::COMMAND_R | ModifierFlag::OPTION_L,
  <!-- adjust wait for your machine -->
  KeyCode::VK_WAIT_10MS,
  KeyCode::VK_WAIT_10MS,
  KeyCode::VK_WAIT_10MS,
  KeyCode::SPACE, ModifierFlag::COMMAND_R | ModifierFlag::OPTION_L,

  Option::NOREPEAT,
</autogen>

การเปลี่ยนแปลงรับผลกระทบจากข้อผิดพลาดเดียวกัน

วิธีแก้ปัญหาอื่นคือเพียงเปลี่ยนเป็นแหล่งอินพุตอื่นและย้อนกลับ:

<root>
  <vkchangeinputsourcedef>
    <name>KeyCode::VK_CHANGE_INPUTSOURCE_HIRAGANA</name>
    <inputsourceid_equal>com.apple.inputmethod.Kotoeri.Japanese</inputsourceid_equal>
  </vkchangeinputsourcedef>
  <vkchangeinputsourcedef>
    <name>KeyCode::VK_CHANGE_INPUTSOURCE_SPANISH</name>
    <inputsourceid_equal>com.apple.keylayout.Spanish</inputsourceid_equal>
  </vkchangeinputsourcedef>
  <vkchangeinputsourcedef>
    <name>KeyCode::VK_CHANGE_INPUTSOURCE_US</name>
    <inputsourceid_equal>com.apple.keylayout.US</inputsourceid_equal>
  </vkchangeinputsourcedef>
  <vkchangeinputsourcedef>
    <name>KeyCode::VK_CHANGE_INPUTSOURCE_CHINESE</name>
    <inputsourceid_equal>com.apple.inputmethod.TCIM.Pinyin</inputsourceid_equal>
  </vkchangeinputsourcedef>
  <item>
    <name>inputsources</name>
    <identifier>inputsources</identifier>
    <autogen>__KeyOverlaidModifier__ KeyCode::COMMAND_L, ModifierFlag::COMMAND_L | ModifierFlag::NONE, KeyCode::VK_CHANGE_INPUTSOURCE_US, KeyCode::COMMAND_L</autogen>
    <autogen>__KeyOverlaidModifier__ KeyCode::COMMAND_R, ModifierFlag::COMMAND_R | ModifierFlag::NONE, KeyCode::VK_CHANGE_INPUTSOURCE_SPANISH, KeyCode::COMMAND_R</autogen>
    <autogen>__KeyToKey__ KeyCode::C, ModifierFlag::OPTION_L | ModifierFlag::COMMAND_L | ModifierFlag::NONE, KeyCode::VK_CHANGE_INPUTSOURCE_CHINESE, KeyCode::VK_CHANGE_INPUTSOURCE_US, KeyCode::VK_CHANGE_INPUTSOURCE_CHINESE</autogen>
    <autogen>__KeyToKey__ KeyCode::C, ModifierFlag::OPTION_R | ModifierFlag::COMMAND_R | ModifierFlag::NONE, KeyCode::VK_CHANGE_INPUTSOURCE_HIRAGANA, KeyCode::VK_CHANGE_INPUTSOURCE_US, KeyCode::VK_CHANGE_INPUTSOURCE_HIRAGANA</autogen>
  </item>
</root>

โซลูชันที่สองของคุณปิดใช้งานคีย์คำสั่งสำหรับทางลัดอื่น ๆ ทั้งหมด (เช่น+ Wเพื่อปิดหน้าต่าง) ซึ่งไม่ใช่สิ่งที่ฉันต้องการอย่างแน่นอน ... สำหรับโซลูชันที่ 1 ฉันจะลองอีกครั้งในภายหลัง
Blaszard

ในฐานะที่เป็นวิธีการแก้ปัญหาของคุณครั้งแรกผมไม่แน่ใจว่าทำไมคุณต้องการที่จะรอประมาณ 160 มิลลิวินาทีและสลับสามครั้ง ...
Blaszard

อืม ... ฉันยังมีปัญหาในที่__KeyOverlaidModifier__กล่าวข้างต้น แต่ฉันเปลี่ยนแหล่งข้อมูลภาษาญี่ปุ่นและสเปนเพราะแหล่งข้อมูลภาษาญี่ปุ่นสามารถทำงานได้อย่างถูกต้องหากคุณตั้งค่าจากภายในการตั้งค่าของ Karabiner ในส่วนแหล่งข้อมูลภาษาญี่ปุ่น ขอบคุณสำหรับคำตอบ.
Blaszard

0

คือคีย์ "dead" ซึ่งเป็นคีย์ตัวดัดแปลง มันไม่ได้ทำอะไรด้วยตัวเองแม้ว่ามันจะนับจำนวนครั้งที่กดมันก็อาจเป็นเหตุผลว่าทำไมมันถึงทำงานในความพยายามครั้งที่สอง

ตรงประเด็น ... ทำไมคุณต้องการใช้เพื่อสลับภาษาอินพุตดังนั้นจึงไม่ใช้สำหรับฟังก์ชั่นอื่น

ทำไมไม่ใช้ F-Keys แทนล่ะ

ทางออกที่ดีกว่าอาจเป็นหนึ่งในสิ่งเหล่านี้ ...

https://superuser.com/questions/224161/switch-to-specific-input-source


ฉันไม่ยึดติดกับการใช้แอปเปิ้ลคีย์ (บางทีคุณอาจเข้าใจผิด(คีย์คำสั่ง) กับแอปเปิ้ลคีย์ ... ?)
Blaszard

นั่นเป็นเพราะวิธีที่ง่ายที่สุดในการพิมพ์และการสลับระหว่างภาษาต่าง ๆ เกิดขึ้นบ่อยมาก
Blaszard

ประเด็นของฉันยังคงอยู่
Tetsujin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.