Windows 8: เพิ่มเครื่องหมาย umlauts ภาษาเยอรมันให้กับรูปแบบแป้นพิมพ์ของสหรัฐอเมริกา (อาจใช้ AutoHotKey)


4

ฉันเพิ่งรู้ว่าMicrosoft Keyboard Layout Creatorไม่ทำงานอีกต่อไปใน Windows 8 ฉันใช้มันสำเร็จใน Windows 7 เพื่อสร้างรูปแบบแป้นพิมพ์ที่กำหนดเองที่ด้านบนของเค้าโครงของสหรัฐอเมริกาซึ่งฉันได้เพิ่ม AltGr + a, AltGr + o, AltGr ด้วย + u สำหรับ umlauts ที่เกี่ยวข้องä, öและü

ตอนนี้ฉันต้องการทำสิ่งเดียวกันใน Windows 8 ด้วยความยากลำบากเพิ่มเติมที่แล็ปท็อปเครื่องใหม่ของฉันไม่มีคีย์ AltGr แต่มีเพียงปุ่มเดียวหนึ่งปุ่ม Crtl และปุ่มเดียวและการใช้งานร่วมกันกับ a, o และ u ดังนั้นฉันสงสัยว่าฉันสามารถใช้AutoHotKeyเพื่อสร้างปุ่มลัดสำหรับ Space + a, Space + o และ Space + u ได้ไหม นี่เป็นวิธีที่ฉันได้รับ:

~space & a::
Send ä

สคริปต์นี้จะแมป Space + a ไปยังเครื่องหมายอุมเลาต์ที่ถูกต้องและเครื่องหมายและจะทำให้แน่ใจว่าคุณยังคงสามารถใช้ปุ่มเว้นวรรคได้เมื่อไม่ใช้ฮอตคีย์นี้ อย่างไรก็ตามสิ่งนี้จะแทรกช่องว่างด้านหน้า 'ä' เสมอ นอกจากนี้ความต่อเนื่องอย่างรวดเร็วของปุ่ม Space และ a จะทำให้เกิด umlaut เมื่อฉันต้องการพิมพ์ 'a'

ฉันกำลังมองหาวิธีแก้ปัญหาที่จะแทรกอักขระเดี่ยวโดยไม่มีช่องว่างเมื่อกดปุ่มลัดที่สอดคล้องกันและไม่มีผลใด ๆ เป็นอย่างอื่นหมายถึงการต่อเนื่อง (ตรงข้ามกับการกด) พร้อมกับการกด Space และ {a, o, u} จะไม่ทำอะไรเลย นอกจากนี้ไม่ควรยุ่งกับปุ่มลัดทั้งระบบเช่น Windows + Space เพื่อเปลี่ยนภาษาที่ป้อน หากสามารถทำได้โดยไม่ต้องAutoHotKeyมีความสุขฉันก็จะยอมรับวิธีการแก้ปัญหาเช่นกัน


ฉันคิดว่า Keyboard Layout Creator ใช้งานได้จริง แต่คุณจะต้องรีสตาร์ทเพื่อเปิดใช้งานเลย์เอาต์ใหม่หลังจากการติดตั้ง อย่างไรก็ตามคุณสามารถใช้ Ctrl, Shift และ Alt เป็นตัวดัดแปลงฮอตและฉันชอบโซลูชัน AutoHotKey โดยใช้สเปซบาร์ดีกว่า
pederpansen

คำตอบ:


4

ฉันเห็นว่าคำตอบอื่นถูกเลือกแล้ว แต่นี่เป็นคำตอบส่วนตัวของฉัน ฉันสร้างฮอตสแตนจำนวนหนึ่ง เช่น"aจะให้ä

:?C*:``a::à
:?C*:``i::ì
:?C*:``e::è
:?C*:``o::ò
:?C*:``u::ù
:?C*:``A::À
:?C*:``I::Ì
:?C*:``E::È
:?C*:``O::Ò
:?C*:``U::Ù

:?C*:^ :: ; Turn ^{Space} into neutral ^, else ^ will be used in next vowel.
    Send, {^}{Space}{BackSpace}
Return

:?C*:^a::â
:?C*:^i::î
:?C*:^e::ê
:?C*:^o::ô
:?C*:^u::û
:?C*:^A::Â
:?C*:^I::Î
:?C*:^E::Ê
:?C*:^O::Ô
:?C*:^U::Û


:?C*:`" :: ; Turn "{Space} into neutral ", else " will be used in next vowel.
    Send, +{'}{Space}{BackSpace}
Return

:?C*:`"a::ä
:?C*:`"i::ï
:?C*:`"e::ë
:?C*:`"o::ö
:?C*:`"u::ü
:?C*:`"A::Ä
:?C*:`"I::Ï
:?C*:`"E::Ë
:?C*:`"O::Ö
:?C*:`"U::Ü

:?C*:' :: ; Turn '{Space} into neutral ', else ' will be used in next vowel.
    Send, {'}{Space}{BackSpace}
Return

:?C*:`'a::á
:?C*:`'i::í
:?C*:`'e::é
:?C*:`'o::ó
:?C*:`'u::ú
:?C*:`'A::Á
:?C*:`'I::Í
:?C*:`'E::É
:?C*:`'O::Ó
:?C*:`'U::Ú

:?C*:`'c::ç
:?C*:`'C::Ç
:?C*:ss\::ß
:?C*:ae\::æ
:?C*:AE\::Æ
:?C*:oe\::œ
:?C*:OE\::Œ

ขอโทษที่ตอบกลับมาช้า นี่เป็นสคริปต์ที่ยอดเยี่ยมมันทำงานได้ดีจริงๆ เนื่องจากการขาดชื่อเสียงของฉันฉันไม่สามารถลงคะแนนได้ ขอบคุณสำหรับการแบ่งปัน!
pederpansen

3

ได้รับแรงบันดาลใจจากโพสต์สุดท้ายฉันพบวิธีแก้ไขเพิ่มเติมเนื่องจากบางครั้งข้างต้นทำให้เกิดปัญหาขณะเขียน

  1. ครั้งแรกที่ผม remapped CapsLockจะRShiftเป็นฉันมักจะใช้LShiftที่สำคัญสำหรับทุนอยู่แล้ว
  2. ตั้งค่าการแมป

Rshift & a::
{
  GetKeyState, state, Lshift
  if state = D
    sendinput, Ä
  else
    sendinput, ä    
  return
}

Rshift & o::
{
  GetKeyState, state, Lshift
  if state = D
    sendinput, Ö
  else
    sendinput, ö    
  return
}

Rshift & u::
{
  GetKeyState, state, Lshift
  if state = D
    sendinput, Ü
  else
    sendinput, ü
  return
}

Rshift & s::
{
  sendinput, ß
  return
}

Rshift & e::
{
  sendinput, €
  return
}

ฉันยังสังเกตเห็นว่าการใช้พื้นที่เป็นปุ่มลัดไม่ใช่ความคิดที่ดีโดยทั่วไป คำตอบของฉันด้านล่างใช้ในการทำงานบางครั้ง แต่เมื่อเร็ว ๆ นี้มันเริ่มล้มเหลว การใช้กะที่ถูกต้องเป็นวิธีการแก้ปัญหาที่ง่ายและมีประสิทธิภาพ
pederpansen

0

รู้สึกแปลก ๆ ที่ตอบคำถามของฉันเอง แต่เนื่องจากไม่มีใครมีความคิดฉันเลยคิดออกเอง AutoHotKeyสคริปต์ต่อไปนี้ทำการหลอกลวง:

#SingleInstance force

~space & a::
{
  GetKeyState, state, Shift
  if state = D
    sendinput, {backspace 1}Ä
  else
    sendinput, {backspace 1}ä

  return
}

~space & o::
{
  GetKeyState, state, Shift
  if state = D
    sendinput, {backspace 1}Ö
  else
    sendinput, {backspace 1}ö
  return
}

~space & u::
{
  GetKeyState, state, Shift
  if state = D
    sendinput, {backspace 1}Ü
  else
    sendinput, {backspace 1}ü
  return
}

~space & s::
{
  sendinput, {backspace 1}ß
  return
}

~space & e::
{
  sendinput, {backspace 1}€
  return
}

ส่วนที่สำคัญคือการใช้backspaceฟังก์ชั่นซึ่งจะลบพื้นที่เมื่อมีการเปิดใช้งานกรณีฮอตคีย์อย่างใดอย่างหนึ่ง นอกจากนี้การตรวจสอบสถานะของปุ่ม shift จะช่วยให้สามารถแทรกตัวละครได้ เพื่อความสะดวกฉันได้เพิ่มปุ่มลัดสำหรับ "ชาร์ป s" (ซึ่งมีเฉพาะในตัวพิมพ์เล็ก) และสัญลักษณ์ยูโร

กรุณาตรวจสอบให้แน่ใจว่าจะเริ่มต้นสคริปต์นี้เมื่อเข้าสู่ระบบด้วยสิทธิผู้ดูแลระบบตามคำแนะนำที่ดีมากที่นี่

กับสคริปต์นี้ฟังก์ชั่นพื้นที่สำคัญเป็นมาก่อนและเฉพาะในกรณีของการกดมันเข้าด้วยกันกับหนึ่งในคีย์a, o, u, sหรือeมันไม่อะไรเป็นพิเศษซึ่งเป็นวิธีการที่ผมกำลังมองหา


0

คุณสามารถใช้บิตอีกต่อไป แต่คีย์มาตรฐาน Alt + 132 = ä Alt + 137 (or 0235) = ë Alt + 139 (or 0239) = ï Alt + 148 (or 0246) = ö Alt + 129 (or 0252) = ü

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