데스크톱 접근성 기능 지원
Compose Multiplatform은 Jetpack Compose를 기반으로 구축되어, 대부분의 접근성 기능을 모든 플랫폼의 공통 코드에서 사용할 수 있게 해줍니다. 현재 데스크톱의 접근성 지원 상태는 다음과 같습니다:
| 플랫폼 | 접근성 상태 |
|---|---|
| MacOS | 완전 지원 |
| Windows | Java Access Bridge를 통해 지원 |
| Linux | 지원되지 않음 |
Windows에서 접근성 사용 설정하기
Windows의 접근성은 기본적으로 비활성화되어 있는 Java Access Bridge를 통해 제공됩니다. Windows에서 접근성 기능을 개발하려면 다음 명령어로 Java Access Bridge를 활성화하세요:
%\JAVA_HOME%\bin\jabswitch.exe /enable접근성 기능이 포함된 네이티브 배포판을 만들려면 modules DSL 메서드를 사용하여 jdk.accessibility 모듈을 추가하세요:
compose.desktop {
application {
nativeDistributions {
modules("jdk.accessibility")
}
}
}예제: 시맨틱 규칙이 적용된 커스텀 버튼
커스텀 버튼이 있는 간단한 앱을 만들고 스크린 리더 도구를 위한 설명 텍스트를 지정해 보겠습니다. 스크린 리더가 활성화된 상태에서 버튼 설명에 지정된 "Click to increment value" 텍스트를 들을 수 있습니다:
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.ui.*
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.semantics.*
import androidx.compose.ui.unit.*
import androidx.compose.ui.window.*
fun main() = singleWindowApplication(
title = "Custom Button", state = WindowState(size = DpSize(300.dp, 200.dp))
) {
var count by remember { mutableStateOf(0) }
Box(modifier = Modifier.padding(50.dp)) {
Box(modifier = Modifier
.background(Color.LightGray)
.fillMaxSize()
.clickable { count += 1 }
// 콘텐츠의 텍스트를 사용합니다
.semantics(mergeDescendants = true) {
// UI 요소의 유형을 할당합니다
role = Role.Button
// 버튼에 도움말 텍스트를 추가합니다
contentDescription = "Click to increment value"
}
) {
val text = when (count) {
0 -> "Click Me!"
1 -> "Clicked"
else -> "Clicked $count times"
}
Text(text, modifier = Modifier.align(Alignment.Center), fontSize = 24.sp)
}
}
}.semantics(mergeDescendants = true)"}
macOS에서 애플리케이션 요소의 접근성 정보를 테스트하려면 Accessibility Inspector (Xcode | Open Developer Tool | Accessibility Inspector)를 사용할 수 있습니다:

Windows에서는 JAWS의 Show Speech History 기능이나 NVDA의 Speech Viewer를 사용할 수 있습니다:

더 많은 예제는 Accessibility in Jetpack Compose 가이드를 참고하세요.
다음 단계
기타 데스크톱 컴포넌트에 대한 튜토리얼을 살펴보세요.
