Robot 클래스를 사용하여 문자열을 입력하는 코드를 작성했습니다. 실제로는 키 스위치가 없기 때문에 키 코드가없는 것을 제외하고는 대부분 문자가 큰 문자를 사용해야합니다. Shift + 다른 키가 있습니다. 대문자의 경우, Character.isUpperCase(c)
을 사용하여 확인하기가 쉽지만, [email protected]#$%^&*()_+
과 같은 모든 기호와 다양한 구두점은 "대문자"로 간주되지 않습니다.하지만 대문자로 입력 할 때 Shift 키를 눌러야합니다. 인터넷 검색을 시도했지만 만족스런 답변이없는 포럼 게시물을 발견했습니다. 캐릭터가 이동해야하는지 여부를 결정할 수있는 방법이 있습니까? 그렇다면 "이동하지 않은"버전은 무엇입니까?캐릭터가 Shift 키를 눌러 내려야하는지 어떻게 결정합니까?
편집 : 여기까지 내가 지금까지 가지고있는 코드가 있습니다.
public void GenerateKeyTyped(char c) {
if (Character.isUpperCase(c)) {
r.keyPress(KeyEvent.VK_SHIFT);
}
r.keyPress(GetKeyCode(c));
r.keyRelease(GetKeyCode(c));
if (Character.isUpperCase(c)) {
r.keyRelease(KeyEvent.VK_SHIFT);
}
}
일부 코드를 게시 할 수 있습니까 (아마도 엄청난 양의'switch' 문을 다듬은 후에)? 당신이하는 일을하기위한 더 좋은 방법은 아마도 엄청난 양의 코드를 필요로하지 않을 것입니다. Java는 키 코드를 ASCII 문자로 변환하는 방법을 알고 있습니다. 그것은 이미 당신이 원하는 것을 이미 할 수 있습니다. –
여기 지금까지 가지고있는 코드가 있는데, 지금 당장은 내가 원하는 것을하지 않습니다. \t 공개 무효 GenerateKeyTyped (숯 c) { \t \t 경우 (Character.isUpperCase (c)) { \t \t \t r.keyPress (KeyEvent.VK_SHIFT는); \t \t} \t \t r.keyPress (GetKeyCode (c)); \t \t r.keyRelease (GetKeyCode (c)); \t \t if (Character.isUpperCase (c)) { \t \t \t r.keyRelease (KeyEvent.VK_SHIFT); \t \t r은 로봇이며 GetKeyCode (char c)는 ginormous switch 문입니다. 내가 실제로하려고하는 것은 파스칼로 작성된 키보드 컨트롤을위한 API를 구현하는 것이다. GetKeyCode는 API의 GetKeyCode 값을 직접 복사하기 만하면됩니다. –
아, 형식이 잘못되어 원본 게시물에 추가했습니다. –