국제 언어 환경 설명서

XmTextXmTextField

Xm CTL은 시각적으로 작동하며 Motif 2.0 CSText 위짓트의 패턴을 따른 움직임 및 삭제 활동의 병렬 세트를 추가함으로써 XmTextXmTextField를 확장합니다 . 표준 Motif 2.1 TextTextField는 논리적 순서와 물리적 순서를 구분하지 않습니다. nextforward는 “오른쪽으로”를 의미하는 반면, previousbackward는 “왼쪽으로”를 의미합니다. 하지만 CSText는 올바로 구분하여 정확한 물리적 이름(예: left-character (), delete-right-word())으로 새 활동 세트를 정의합니다. 이 활동 루틴 모두는 위짓트의 XmNlayoutDirection 에 민감하게 정의되며 적절한 다음 또는 이전 활동을 호출합니다. Xm CTL 확장은 CSText 확장보다 다소 복잡합니다. Xm CTL 확장은 중립적 고정화를 포함한 의사 XOC에 의한 결정에 따라 위짓트의 전체 방향보다 커서를 둘러싼 물리적 문자의 구체적 방향에 민감합니다.

또한 rendition 태그를 제공하고 배열을 제어하기 위한 선택 정책에 대한 새로운 자원도 있습니다.

새로운 Xm CTL 활동 세트는 대략 {Move,Delete,Kill}, {Left,Right}, {Character,Word}의 조합으로 이루어지며 아래에 나열되어 있습니다.

표 6–2 Xm CTL의 새로운 자원

이름 

클래스/유형 

액세스 

기본값 

XmNrenditionTag

XmCRenditionTag/XmRString

CSG  

XmFONTLIST_DEFAULT_TAG

XmNalignment

XmCAlignment/XmRAlignment

CSG  

XmALIGNMENT_BEGINNING

XmNeditPolicy

XmCEditPolicy/XmREditPolicy

CSG  

XmEDIT_LOGICAL

XmNrenditionTag

위짓트를 위해 사용되는 XmNrenderTable 자원에 있는 XmRendition의 rendition 태그를 지정합니다.

XmNalignment

위짓트에서 사용되는 텍스트 배열을 지정합니다. XmALIGNMENT_END XmALIGNMENT_CENTER만 지원됩니다.

XmNeditPolicy

위짓트용으로 사용되는 편집 정책을 XmEDIT_LOGICAL 또는 XmEDIT_VISUAL로 지정합니다. XmEDIT_VISUAL의 경우에는 선택, 커서 이동 및 삭제가 시각적 스타일로 표시됩니다. 자원을 설정하면 표준 키보드 이동 및 삭제 이벤트에 대한 번역도 새 “시각적” 활동 목록이나 기존 논리적 활동으로 변경됩니다.

문자 방향 활동 루틴

forward-cell()backward-cell() 활동은 지정된 방향의 문자 방향을 질의합니다. 방향이 왼쪽에서 오른쪽 방향이면 해당하는 next-/forward- 또는 previous-/backward- 변수를 호출합니다.

문자 방향 추가 동작

활동은 레이아웃 서비스 변환 OutToInpProperty 버퍼(중첩 수준용)를 사용해 문자의 방향을 결정합니다. 따라서 위짓트의 동작은 로켈 지향 변환에 따라 달라집니다. OutToInp의 정보 또는 특히, Property 버퍼가 정확하지 않으면 위짓트는 예기치 않은 동작이 일어날 수 있습니다. 아울러, 로켈 지향 모듈이 본 사양의 범위를 벗어나면 양방향 편집 동작은 동일한 텍스트, 응용프로그램, 자원 값 및 LayoutObject 구성의 경우에도 플랫폼에 따라 차이가 있을 수 있습니다.

시각적 모드 활동은 셀 기반 동작의 표시입니다.논리적 모드 활동은 논리적 문자 기반 동작을 유발할 수 있습니다. 예를 들어, delete-right-character() 작업은 디스플레이 셀에 해당하는 입력 버퍼 문자들을 삭제합니다. 즉, LayoutObject 변환 “속성” 바이트 “새 셀 표시 기호”가 1인 한 개의 입력 버퍼 문자 및 “새 셀 표시 기호”가 0인 뒤따르는 모든 문자입니다. [Property 버퍼에 대한 자세한 정보는 CAE Specificationm_transform_layout() 사양을 참조하십시오.]

마찬가지로 backward-character()의 경우 삽입점은 입력 버퍼에서 한 문자 뒤로 이동되며 커서는 관련된 출력 버퍼 문자에 해당하는 시각적 위치로 복귀합니다. 이것은 복합적인 디스플레이 셀을 가로질러 이동하려면 여러 번 키 입력을 해야 함을 의미합니다;커서는 삽입점이 “새 셀 표시 기호”가 0인 (즉, 분음 부호 또는 조각 묶음 기호) 입력 버퍼 문자를 가로질러 이동할 때 디스플레이 위치는 실제로는 변경되지 않습니다.

이것은 삭제 작업이 논리/입력 버퍼 측이나 물리적/출력측의 디스플레이 셀 수준에서 일어난다는 것을 의미합니다. 입력 및 출력 버퍼 간의 1 대 1 대응이 성립되지 않기 때문에 엄격한 물리적 문자 대 문자 삭제를 위한 모드는 없습니다. 주어진 물리적 문자는 예를 들어 논리적 문자의 한 단편만을 나타낼 수 있습니다.

XmText 활동 루틴

다음 목록은 XmText 활동 루틴을 설명합니다.

left-character(extend)

XmNeditPolicyXmEDIT_LOGICAL이고 인자가 없이 호출되면 삽입 커서가 논리적으로 한 문자 뒤로 이동합니다. 삽입 커서가 줄의 시작 부분에 있으면 삽입 커서는 이전 줄의 논리적인 마지막 문자로 이동합니다. 그렇지 않으면 삽입 커서 위치는 변경되지 않습니다.

XmNeditPolicyXmEDIT_VISUAL이면 커서는 커서 위치의 왼쪽으로 이동합니다. 삽입 커서가 줄의 시작 부분에 있으면 삽입 커서는 이전 줄의 끝 문자로 이동합니다.

left-character()가 인자를 통해 호출되면 extend 인자가 없는 경우와 마찬가지로 삽입 커서가 이동하고 현재 선택이 확장됩니다.

left-character() 활동은 합리적인 값 XmCR_MOVING_INSERT_CURSOR을 가진 XmNmotionVerifyCallback 프로시저에 대한 호출을 생성합니다. extend 인자를 통해 호출하면 이 활동은 XmNgainPrimaryCallback 프로시저에 대한 호출을 생성할 수 있습니다. 자세한 정보는 Motif Programmer's Reference의 콜백 설명을 참조하십시오.

right-character(extend)

XmNeditPolicyXmEDIT_LOGICAL이고 아무런 인자가 없이 호출되면 삽입 커서가 논리적으로 한 문자 앞으로 이동합니다. 삽입 커서가 줄의 논리적인 끝 부분에 있으면 삽입 커서는 다음 줄의 논리적인 시작 부분으로 이동합니다.

XmNeditPolicyXmEDIT_VISUAL이면 커서는 커서 위치의 오른쪽으로 이동합니다. 삽입 커서가 줄의 끝 부분에 있으면 삽입 커서는 다음 줄의 시작 부분으로 이동합니다.

extend 인자를 통해 호출되면 인자가 없는 경우와 마찬가지로 삽입 커서를 이동시키며 현재 선택을 확장합니다.

right-character() 활동은 적절한 값 XmCR_MOVING_INSERT_CURSOR으로 XmNmotionVerifyCallback 프로시저에 대한 호출을 생성합니다. extend 인자와 함께 호출되면 XmNgainPrimaryCallback 프로시저에 대한 호출을 생성할 수 있습니다. 자세한 정보는 Motif Programmer's Reference의 콜백 설명을 참조하십시오.

right-word(extend)

XmNeditPolicyXmEDIT_LOGICAL이고 아무런 인자 없이 호출되면 삽입점을 논리적인 다음 단어가 존재하는 경우 해당 단어의 논리적 시작 부분으로 이동시킵니다. 그렇지 않으면 기존 단어의 논리적 끝 부분으로 이동시킵니다. 삽입 커서가 줄의 논리적인 끝 부분이나 줄의 논리적인 마지막 단어에 있으면 해당 커서를 다음 줄의 논리적인 첫 번째 단어로 이동시킵니다. 그렇지 않으면 기존 단어의 논리적 끝 부분으로 이동시킵니다.

XmNeditPolicyXmEDIT_VISUAL이고 인자가 없이 호출되면 삽입 커서를 줄 끝의 오른쪽 또는 뒤에 있는 첫 번째 흰 색 공백 문자 뒤 비 흰색 공백 문자로 이동시킵니다.

extend의 인자를 통해 호출되면 인자가 없는 경우와 마찬가지로 삽입 커서를 이동시키고 현재의 선택을 확장합니다.

left-word() 활동은 합리적인 값 XmCR_MOVING_INSERT_CURSOR을 가진 XmNmotionVerifyCallback 프로시저에 대한 호출을 생성합니다. extend 인자를 통해 호출되면 XmNgainPrimaryCallback 프로시저에 대한 호출을 생성할 수 있습니다. 자세한 정보는 Motif Programmer's Reference의 콜백 설명을 참조하십시오.

delete-left-character()

XmNeditPolicyXmEDIT_LOGICAL이면 delete-previous-char()에 상응합니다. XmNeditPolicyXmEDIT_VISUAL이면 정상 모드에서 널이 아닌 선택이 있는 경우 해당 선택을 삭제합니다. 그렇지 않으면 삽입 커서의 남은 문자를 삭제합니다. 추가 모드에서 널이 아닌 선택이 있으면 커서는 선택에서 사라지지 않고 XmNpendingDelete가 참으로 설정되며 해당 선택을 삭제합니다. 그렇지 않으면 삽입 커서의 남은 문자를 삭제합니다. 이것은 선택에 영향을 줄 수 있습니다.

delete-left-character() 활동은 합리적인 값 XmCR_MODIFYING_TEXT_VALUE을 가진 XmNmodifyVerifyCallback 프로시저 및 합리적인 값 XmCR_VALUE_CHANGED을 가진 XmNvalueChangedCallback 프로시저에 대한 호출을 생성합니다.

delete-right-character()

XmNeditPolicyXmEDIT_VISUAL이면 delete-next-character()에 상응합니다. XmNeditPolicyXmEDIT_VISUAL이면 정상 모드에서 널이 아닌 선택이 있는 경우 해당 선택을 삭제합니다. 그렇지 않으면 삽입 커서의 오른쪽 문자를 삭제합니다. 추가 모드에서 널이 아닌 선택이 있으면 커서는 선택에서 사라지지 않고 XmNpendingDelete가 참으로 설정되며 해당 선택을 삭제합니다. 그렇지 않으면 삽입 커서의 오른쪽 문자를 삭제합니다. 이것은 선택에 영향을 줄 수 있습니다.

delete-left-character() 활동은 합리적인 값 XmCR_MODIFYING_TEXT_VALUE을 가진 XmNmodifyVerify-Callback 프로시저 및 합리적인 값 XmCR_VALUE_CHANGED을 가진 XmNvalue-ChangedCallback 프로시저에 대한 호출을 생성합니다.

문자 구성, 묶음 기호 및 분음 부호를 지원하기 위해 일부 셀 기반 루틴이 구축됩니다. 다시 말해, 두 개 이상의 문자가 단일 표시 셀을 점유하는 도형 문자로 표현됩니다.

XmText 셀 활동 루틴은 다음과 같습니다:

backward-cell(extend)

삽입 커서를 한 셀 뒤로 이동합니다. XmNeditPolicy XmEDIT_LOGICAL이면 삽입 커서는 현재의 셀보다 논리적으로 앞선 셀의 시작 부분으로 이동합니다. 그렇지 않으면 현재 셀의 시작 부분으로 이동합니다.

XmNeditPolicyXmEDIT_VISUAL이면 커서는 커서 왼쪽 셀의 시작 부분으로 이동합니다. prev-cell() 활동은 합리적인 값 XmCR_MOVING_INSERT_CURSOR을 가진 XmNmotionVerifyCallback 프로시저에 대한 호출을 생성합니다. extend 인자를 통해 호출되면 XmNgainPrimaryCallback 프로시저에 대한 호출을 생성할 수 있습니다.자세한 정보는 Motif Programmer's Reference의 콜백 설명을 참조하십시오.

forward-cell(extend)

삽입 커서를 논리적인 다음 셀의 시작 부분으로 이동시킵니다. 그렇지 않으면 해당 셀의 끝으로 이동시킵니다. XmNeditPolicyXmEDIT_LOGICAL이면 커서는 한 셀 앞으로 이동합니다.

XmNeditPolicyXmEDIT_VISUAL이면 커서는 커서 위치 오른쪽 셀의 시작 부분으로 이동합니다. 그렇지 않으면 현재 셀의 끝 부분으로 이동합니다.forward-cell() 활동은 합리적인 값 XmCR_MOVING_INSERT_CURSOR을 가진 XmNmotionVerifyCallback 프로시저에 대한 호출을 생성합니다. extend 인자를 통해 호출되면 XmNgainPrimaryCallback 프로시저에 대한 호출을 생성할 수 있습니다.자세한 정보는 Motif Programmer's Reference의 콜백 설명을 참조하십시오.