Aleksandr Veselov
3 years ago
committed by
GitHub
4 changed files with 79 additions and 0 deletions
@ -0,0 +1,61 @@
|
||||
# Accessibility support |
||||
|
||||
## Platform Support |
||||
|
||||
| Platform | Status | |
||||
|----------|-----------------------------------| |
||||
| MacOS | Supported | |
||||
| Windows | Supported with Java Access Bridge | |
||||
| Linux | Not supported | |
||||
|
||||
## Custom widget with semantic rules |
||||
|
||||
```kotlin |
||||
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 /* Use text from the contents (1) */) { |
||||
// This is a button (2) |
||||
role = Role.Button |
||||
// Add some help text to button (3) |
||||
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) |
||||
} |
||||
} |
||||
} |
||||
``` |
||||
|
||||
![Custom Widget](./images/custom-widget.png) |
||||
|
||||
# Windows |
||||
Accessibility on Windows is provided by Java Access Bridge and is disabled by default. To enable it, run the following command in Command Prompt. |
||||
|
||||
```cmd |
||||
%JAVA_HOME%\bin\jabswitch.exe /enable |
||||
``` |
||||
|
||||
There are some issues with HiDPI display support on windows, see [Desktop Accessibility on Windows](Windows.md) for details. |
@ -0,0 +1,18 @@
|
||||
# Desktop Accessibility on Windows |
||||
|
||||
## Enabling Java Accessibility on Windows |
||||
Java Access Bridge is disabled by default. To enable it, run |
||||
|
||||
```cmd |
||||
%JAVA_HOME%\bin\jabswitch.exe /enable |
||||
``` |
||||
|
||||
## HiDPI issues |
||||
### JDK support |
||||
HiDPI support in Access Bridge was landed in [JDK-8279227](https://bugs.openjdk.java.net/browse/JDK-8279227). As for Feb/01/2022 this feature is not included in any released JDK, OpenJDK 17.0.4 release with this feature is planned for May 2022. |
||||
|
||||
### NVDA workaround |
||||
NVDA 2021.3.1 does not handle widget position properly. Until they fix it we can override DPI awareness in NVDA compatibility settings as shown: |
||||
|
||||
![NVDA compatibility settings](./images/nvda-compat.png) |
||||
|
After Width: | Height: | Size: 332 KiB |
After Width: | Height: | Size: 103 KiB |
Loading…
Reference in new issue