2013-06-26 2 views
1

은 특정 문자를 얻기 위해 어떤 키 또는 키 조합을 눌러야하는지 확인하는 방법입니다. '1', 'a'와 같은 일부 문자는 쉽지만 '.', '_'또는 'ü'와 같이 다른 문자에는 쉽게 적용 할 수 없습니다. 어떤 생각? 감사.문자에서 system.windows.forms.keys

+0

은 어쩌면이의 http://msdn.microsoft.com/en-us/library/ms646329 – V4Vendetta

+0

중복 가능성을하는 데 도움이 [해당 System.Windows.Input.Key 열거 값에 문자를 변환하는 방법?] (http://stackoverflow.com/questions/544141/how-to-convert-a-character-in-to-equivalent-system-windows-input-key-enum-value) –

+0

필립 : 중복 시스템이 아닙니다. Windows.Input.Key! = System.Windows.Forms.Keys,하지만 흥미로운 링크. 감사합니다 – user1472131

답변

0

여기에 '특수 문자'인 full listing이 있습니다. 이것들은 실제로는 하나의 문자에 대해 특정 코드가 주어지는 문자 엔티티입니다.

이 코드는 주로 코드에서 시퀀스를 제공하지만 클라이언트 측에서 문자 엔티티가 표시되는 HTML에서 주로 사용됩니다. 자세한 내용은 여기 이상

는 다음과 같은 문자가 또 다른 중복도 있습니다, 편집 How to convert from Virtual Key codes to System.Windows.Forms.Keys

당신에게 가능한 중복 답변입니다 "." 여기에 : How to convert a character in to equivalent System.Windows.Input.Key Enum value?

0

당신이 게시 한 링크 덕분에 나는 여기에 게시 된 해결책을 찾았습니다. 입력은 문자이고, 출력은 System.Windows.Forms.Keys의 목록입니다. 첫 번째 키는 실제 키이며, 목록의 다른 키 (있는 경우)는 수정 키입니다.

[DllImport("user32.dll")] 
    static extern short VkKeyScan(char ch); 

    public static List<Keys> FromCharacterToKeys(char c) 
    { 
     var key = BitConverter.GetBytes(VkKeyScan(c)); 
     if (key[1] > 0) 
     { 
      var list = new List<Keys> {(Keys) key[0]}; 
      list.AddRange(ConvertModifierByte(key[1])); 
      return list; 
     } 
     else 
     { 
      return new List<Keys> { (Keys)key[0] }; 
     }  
    } 

    private static List<Keys> ConvertModifierByte(byte modifier) 
    { 
     switch ((short)modifier) 
     { 
      case 1: 
       return new List<Keys> { Keys.Shift }; 
      case 2: 
       return new List<Keys> { Keys.Control }; 
      case 4: 
       return new List<Keys> { Keys.Alt }; 
      case 6: 
       return new List<Keys> { Keys.Control, Keys.Alt }; 
      default: 
       return new List<Keys> { Keys.None }; 
     } 
    } 
관련 문제