diff --git a/Android/Gradle/api/brltty-component.gradle b/Android/Gradle/api/brltty-component.gradle
new file mode 100644
index 000000000..d9bcac0e7
--- /dev/null
+++ b/Android/Gradle/api/brltty-component.gradle
@@ -0,0 +1,17 @@
+brltty.buildComponent(
+  [ componentName: "api",
+    project: project,
+    makeSubdirectory: brltty.native.javaSubdirectory,
+    jars: ["brlapi"],
+
+    libraries: [
+      "brlapi_java",
+      "brlapi"
+    ],
+
+    librarySubdirectories: [
+      brltty.native.javaSubdirectory,
+      brltty.native.coreSubdirectory
+    ],
+  ]
+)
diff --git a/Android/Gradle/api/brltty.gradle b/Android/Gradle/api/brltty.gradle
deleted file mode 100644
index 84a48e94d..000000000
--- a/Android/Gradle/api/brltty.gradle
+++ /dev/null
@@ -1,16 +0,0 @@
-brltty.addTasks([
-  project: project,
-  componentName: "api",
-  makeSubdirectory: brltty.native.javaSubdirectory,
-  jars: ["brlapi"],
-
-  libraries: [
-    "brlapi_java",
-    "brlapi"
-  ],
-
-  librarySubdirectories: [
-    brltty.native.javaSubdirectory,
-    brltty.native.coreSubdirectory
-  ],
-])
diff --git a/Android/Gradle/api/build.gradle b/Android/Gradle/api/build.gradle
index 998d73747..681db6160 100644
--- a/Android/Gradle/api/build.gradle
+++ b/Android/Gradle/api/build.gradle
@@ -7,13 +7,15 @@ description = """
 "${project.name}" provides the Java client bindings for "${rootProject.name}" code.
 """
 
-apply from: "brltty.gradle"
+apply from: "brltty-component.gradle"
 
 dependencies {
   api files("src/main/libs/brlapi.jar")
 }
 
 android {
+  namespace "org.a11y.brlapi"
+
   compileSdkVersion "android-34"
   buildToolsVersion "29.0.3"
 
@@ -27,7 +29,7 @@ afterEvaluate {
   publishing {
     publications {
       release(MavenPublication) {
-        from components.release
+        from components.findByName("release")
         groupId = "org.a11y.brltty"
         artifactId = "brlapi-android"
         version = brltty.config.apiRelease
diff --git a/Android/Gradle/apitest/build.gradle b/Android/Gradle/apitest/build.gradle
index 19b4b6a0b..f1ad03d9d 100644
--- a/Android/Gradle/apitest/build.gradle
+++ b/Android/Gradle/apitest/build.gradle
@@ -9,6 +9,8 @@ A test program to verify that the Maven dependency on BrlAPI is working.
 apply from: rootProject.file("brlapi-android.gradle")
 
 android {
+  namespace "org.a11y.brlapi.android"
+
   compileSdkVersion "android-34"
   buildToolsVersion "29.0.3"
 
diff --git a/Android/Gradle/app/brltty-assets.gradle b/Android/Gradle/app/brltty-assets.gradle
index e872fb6ea..bc435b6a8 100644
--- a/Android/Gradle/app/brltty-assets.gradle
+++ b/Android/Gradle/app/brltty-assets.gradle
@@ -79,5 +79,9 @@ task brlttyRemoveMessages (type: Delete) {
 
 brltty.addAssembleTask project, brlttyAddMessages
 brltty.addAssembleTask project, brlttyAddTables
+
+brltty.addConsumerTask(brlttyAddTables, "mergeDebugAssets")
+brltty.addConsumerTask(brlttyAddTables, "mergeReleaseAssets")
+
 clean.dependsOn brlttyRemoveMessages
 clean.dependsOn brlttyRemoveTables
diff --git a/Android/Gradle/app/build.gradle b/Android/Gradle/app/build.gradle
index 941e48126..8ae4fd226 100644
--- a/Android/Gradle/app/build.gradle
+++ b/Android/Gradle/app/build.gradle
@@ -1,6 +1,6 @@
 plugins {
   id "com.android.application"
-  id "com.github.triplet.play" version "3.4.0"
+  id "com.github.triplet.play" version "3.12.0"
 }
 
 description = """
@@ -16,6 +16,8 @@ dependencies {
 }
 
 android {
+  namespace "org.a11y.brltty.android"
+
   compileSdkVersion "android-34"
   buildToolsVersion "29.0.3"
 
@@ -23,8 +25,8 @@ android {
 //ndkVersion "22.1.7171670" // r22b - stable
 
   compileOptions {
-    sourceCompatibility JavaVersion.VERSION_1_7
-    targetCompatibility JavaVersion.VERSION_1_7
+    sourceCompatibility JavaVersion.VERSION_1_8
+    targetCompatibility JavaVersion.VERSION_1_8
   }
 
   lintOptions {
@@ -32,6 +34,10 @@ android {
     error "Untranslatable"
   }
 
+  buildFeatures {
+    buildConfig = true
+  }
+
   defaultConfig {
     targetSdkVersion 34
     minSdkVersion 16
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/APITests.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/APITests.java
index deebb3026..475062ea7 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/APITests.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/APITests.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/AccessibilityButtonCallbacks.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/AccessibilityButtonCallbacks.java
index 6e2bfb798..5f48fea36 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/AccessibilityButtonCallbacks.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/AccessibilityButtonCallbacks.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ApplicationParameters.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ApplicationParameters.java
index 0dca8efd8..7762acb7f 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ApplicationParameters.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ApplicationParameters.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ApplicationSettings.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ApplicationSettings.java
index 58035b729..8eaf4bd9b 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ApplicationSettings.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ApplicationSettings.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ApplicationUtilities.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ApplicationUtilities.java
index b084b575f..ca04a3a8f 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ApplicationUtilities.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ApplicationUtilities.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BluetoothConnection.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BluetoothConnection.java
index f5ff4448c..b64641008 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BluetoothConnection.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BluetoothConnection.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleApplication.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleApplication.java
index 1cda41deb..3ce0e44d9 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleApplication.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleApplication.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleMessage.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleMessage.java
index 4bcb96b52..b69f3ad1b 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleMessage.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleMessage.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleNotification.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleNotification.java
index 8892ce1eb..f67839347 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleNotification.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleNotification.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -20,22 +20,29 @@ package org.a11y.brltty.android;
 import org.a11y.brltty.android.activities.ActionsActivity;
 import org.a11y.brltty.android.settings.DeviceManager;
 
+import android.util.Log;
+
 import android.content.Context;
 import android.content.Intent;
 import android.app.PendingIntent;
+
 import android.app.Activity;
+import android.app.MissingForegroundServiceTypeException;
 
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.NotificationChannel;
 
 public abstract class BrailleNotification {
+  private final static String LOG_TAG = BrailleNotification.class.getName();
+
   private BrailleNotification () {
   }
 
   private final static Integer NOTIFICATION_IDENTIFIER = 1;
   private final static String NOTIFICATION_CHANNEL = "braille";
 
+  private static boolean isCreated = false;
   private static Context applicationContext = null;
   private static NotificationManager notificationManager = null;
   private static Notification.Builder notificationBuilder = null;
@@ -76,49 +83,48 @@ public abstract class BrailleNotification {
     return notificationManager;
   }
 
-  private static boolean isActive () {
-    return notificationBuilder != null;
-  }
-
   private static void makeBuilder () {
-    Context context = getContext();
-
-    if (APITests.haveOreo) {
-      NotificationManager nm = getManager();
-      NotificationChannel channel = nm.getNotificationChannel(NOTIFICATION_CHANNEL);
-
-      if (channel == null) {
-        channel = new NotificationChannel(
-          NOTIFICATION_CHANNEL,
-          getString(R.string.braille_channel_name),
-          NotificationManager.IMPORTANCE_LOW
-        );
-
-        nm.createNotificationChannel(channel);
+    if (notificationBuilder == null) {
+      Context context = getContext();
+      Notification.Builder builder;
+
+      if (APITests.haveOreo) {
+        NotificationManager nm = getManager();
+        NotificationChannel channel = nm.getNotificationChannel(NOTIFICATION_CHANNEL);
+
+        if (channel == null) {
+          channel = new NotificationChannel(
+            NOTIFICATION_CHANNEL,
+            getString(R.string.braille_channel_name),
+            NotificationManager.IMPORTANCE_LOW
+          );
+
+          nm.createNotificationChannel(channel);
+        }
+
+        builder = new Notification.Builder(context, NOTIFICATION_CHANNEL);
+      } else {
+        builder = new Notification.Builder(context)
+                                  .setPriority(Notification.PRIORITY_LOW)
+                                  ;
       }
 
-      notificationBuilder = new Notification.Builder(context, NOTIFICATION_CHANNEL);
-    } else {
-      notificationBuilder = new Notification.Builder(context)
-        .setPriority(Notification.PRIORITY_LOW)
-        ;
-    }
-
-    notificationBuilder
-      .setOngoing(true)
-      .setOnlyAlertOnce(true)
+      builder.setOngoing(true)
+             .setOnlyAlertOnce(true)
+             .setSmallIcon(R.drawable.braille_notification)
+             .setSubText(getString(R.string.braille_hint_tap))
+             .setContentIntent(newPendingIntent(ActionsActivity.class))
+             ;
 
-      .setSmallIcon(R.drawable.braille_notification)
-      .setSubText(getString(R.string.braille_hint_tap))
-      .setContentIntent(newPendingIntent(ActionsActivity.class))
-      ;
+      if (APITests.haveJellyBeanMR1) {
+        builder.setShowWhen(false);
+      }
 
-    if (APITests.haveJellyBeanMR1) {
-      notificationBuilder.setShowWhen(false);
-    }
+      if (APITests.haveLollipop) {
+        builder.setCategory(Notification.CATEGORY_SERVICE);
+      }
 
-    if (APITests.haveLollipop) {
-      notificationBuilder.setCategory(Notification.CATEGORY_SERVICE);
+      notificationBuilder = builder;
     }
   }
 
@@ -146,7 +152,7 @@ public abstract class BrailleNotification {
 
   public static void updateState () {
     synchronized (NOTIFICATION_IDENTIFIER) {
-      if (isActive()) {
+      if (isCreated) {
         setState();
         updateNotification();
       }
@@ -161,7 +167,7 @@ public abstract class BrailleNotification {
 
   public static void updateDevice (String device) {
     synchronized (NOTIFICATION_IDENTIFIER) {
-      if (isActive()) {
+      if (isCreated) {
         setDevice(device);
         updateNotification();
       }
@@ -170,27 +176,33 @@ public abstract class BrailleNotification {
 
   public static void create () {
     synchronized (NOTIFICATION_IDENTIFIER) {
-      if (isActive()) {
-        throw new IllegalStateException("already active");
-      }
-
-      makeBuilder();
-      setState();
-      setDevice(DeviceManager.getSelectedDevice());
+      if (!isCreated) {
+        makeBuilder();
 
-      BrailleService.getBrailleService()
-                    .startForeground(NOTIFICATION_IDENTIFIER, buildNotification());
+        setState();
+        setDevice(DeviceManager.getSelectedDevice());
+
+        try {
+          BrailleService.getBrailleService()
+                        .startForeground(NOTIFICATION_IDENTIFIER, buildNotification());
+
+          isCreated = true;
+          Log.i(LOG_TAG, "has become foreground service");
+        } catch (MissingForegroundServiceTypeException exception) {
+          Log.w(LOG_TAG, ("foreground service type not specified: " + exception.getMessage()));
+        } catch (SecurityException exception) {
+          Log.w(LOG_TAG, ("can't become foreground service: " + exception.getMessage()));
+        }
+      }
     }
   }
 
   public static void destroy () {
     synchronized (NOTIFICATION_IDENTIFIER) {
-      if (!isActive()) {
-        throw new IllegalStateException("not active");
+      if (isCreated) {
+        getManager().cancel(NOTIFICATION_IDENTIFIER);
+        isCreated = false;
       }
-
-      notificationBuilder = null;
-      getManager().cancel(NOTIFICATION_IDENTIFIER);
     }
   }
 }
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleRenderer.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleRenderer.java
index bf60137f4..4f3706b55 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleRenderer.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleRenderer.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleService.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleService.java
index 70243b3ba..f07414481 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleService.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/BrailleService.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/Characters.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/Characters.java
index 0ede477b1..b3607f4f8 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/Characters.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/Characters.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ChooserWindow.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ChooserWindow.java
index 873ff1238..d3de7b46b 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ChooserWindow.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ChooserWindow.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ChromeRole.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ChromeRole.java
index eebba60d3..0e056df9b 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ChromeRole.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ChromeRole.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/CoreThread.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/CoreThread.java
index 3e3b094ef..6cd64520a 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/CoreThread.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/CoreThread.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/DeferredTask.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/DeferredTask.java
index 05e1ef87d..b9d8bd6bf 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/DeferredTask.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/DeferredTask.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/GridBrailleRenderer.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/GridBrailleRenderer.java
index 025efe559..4277b0fe8 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/GridBrailleRenderer.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/GridBrailleRenderer.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/InputHandlers.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/InputHandlers.java
index 763b49e9b..7fbe6e9e4 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/InputHandlers.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/InputHandlers.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/InputService.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/InputService.java
index c338409a9..53e25a9b8 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/InputService.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/InputService.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/LanguageUtilities.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/LanguageUtilities.java
index 1da17cb03..c188c9b19 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/LanguageUtilities.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/LanguageUtilities.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ListBrailleRenderer.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ListBrailleRenderer.java
index af1b9e5c3..5c6b29e79 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ListBrailleRenderer.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ListBrailleRenderer.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/LockUtilities.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/LockUtilities.java
index 81aa2ca21..9c76698cd 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/LockUtilities.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/LockUtilities.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/Logger.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/Logger.java
index 5155c784f..d4aa724c4 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/Logger.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/Logger.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/NodeComparator.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/NodeComparator.java
index 04086c771..e68721351 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/NodeComparator.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/NodeComparator.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/NodeTester.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/NodeTester.java
index 554e3487c..de4fb3f97 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/NodeTester.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/NodeTester.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/OverlayWindow.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/OverlayWindow.java
index aeaeac0e2..ae7c88541 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/OverlayWindow.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/OverlayWindow.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/PcmDevice.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/PcmDevice.java
index 708850fe3..63abdcc30 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/PcmDevice.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/PcmDevice.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/RealScreenElement.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/RealScreenElement.java
index f9f790c4e..b0533abf5 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/RealScreenElement.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/RealScreenElement.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/RenderedScreen.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/RenderedScreen.java
index a2ce37991..347721e54 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/RenderedScreen.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/RenderedScreen.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenDriver.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenDriver.java
index 78f7182b9..afa3f47bd 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenDriver.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenDriver.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenElement.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenElement.java
index c9d81158e..5ed10fe82 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenElement.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenElement.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenElementList.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenElementList.java
index eebcc6f30..42de41828 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenElementList.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenElementList.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenLogger.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenLogger.java
index 4ffe69c3c..e27b51733 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenLogger.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenLogger.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenUtilities.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenUtilities.java
index d82e5650a..d1b599def 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenUtilities.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenUtilities.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenWindow.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenWindow.java
index 3123cce4e..9df2a229c 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenWindow.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/ScreenWindow.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/SingletonReference.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/SingletonReference.java
index baa72bdbb..cbd48caeb 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/SingletonReference.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/SingletonReference.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/StatusIndicators.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/StatusIndicators.java
index 2482e85f7..9741d195c 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/StatusIndicators.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/StatusIndicators.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/StructuralMotion.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/StructuralMotion.java
index c648b71b0..07f337573 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/StructuralMotion.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/StructuralMotion.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/SystemServiceReference.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/SystemServiceReference.java
index 00a242518..4d2fc8057 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/SystemServiceReference.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/SystemServiceReference.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/TextField.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/TextField.java
index 6e6c04df5..d46dcf29d 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/TextField.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/TextField.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/UsbHelper.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/UsbHelper.java
index 2645af8ab..faf65485b 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/UsbHelper.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/UsbHelper.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -59,6 +59,7 @@ public class UsbHelper {
 
             if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
               Log.i(LOG_TAG, "permission granted for USB device: " + device);
+              BrailleNotification.create();
             } else {
               Log.w(LOG_TAG, "permission denied for USB device: " + device);
             }
@@ -71,7 +72,12 @@ public class UsbHelper {
 
     {
       IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
-      usbContext.registerReceiver(permissionReceiver, filter);
+
+      if (APITests.haveUpsideDownCake) {
+        usbContext.registerReceiver(permissionReceiver, filter, Context.RECEIVER_NOT_EXPORTED);
+      } else {
+        usbContext.registerReceiver(permissionReceiver, filter);
+      }
     }
 
     permissionIntent = PendingIntent.getBroadcast(
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/VirtualScreenElement.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/VirtualScreenElement.java
index 78a8cda0b..0d586a7c2 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/VirtualScreenElement.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/VirtualScreenElement.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/AboutActivity.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/AboutActivity.java
index aebe52375..b0908fde4 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/AboutActivity.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/AboutActivity.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/ActionsActivity.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/ActionsActivity.java
index c226b2f7d..f7b61873b 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/ActionsActivity.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/ActionsActivity.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -21,6 +21,7 @@ import org.a11y.brltty.android.*;
 import org.a11y.brltty.android.settings.SettingsActivity;
 
 import android.os.Bundle;
+import android.content.pm.PackageManager;
 
 import android.view.View;
 import android.widget.Button;
@@ -31,12 +32,31 @@ import android.net.Uri;
 import java.io.File;
 
 public class ActionsActivity extends InternalActivity {
+  private final static int BLUETOOTH_PERMISSIONS_REQUEST_CODE = 0;
+
+  @Override
+  public void onRequestPermissionsResult (int code, String[] permissions, int[] results) {
+    if (code == BLUETOOTH_PERMISSIONS_REQUEST_CODE) {
+      for (int i=0; i<results.length; i+=1) {
+        if (results[i] == PackageManager.PERMISSION_GRANTED) {
+          BrailleNotification.create();
+          break;
+        }
+      }
+
+      return;
+    }
+  }
+
   public void switchInputMethod (View view) {
     InputService.switchInputMethod();
   }
 
   public void allowBluetoothConnections (View view) {
-    requestPermissions(BluetoothConnection.requiredPermissions, 0);
+    requestPermissions(
+      BluetoothConnection.requiredPermissions,
+      BLUETOOTH_PERMISSIONS_REQUEST_CODE
+    );
   }
 
   public void launchSettingsActivity (View view) {
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/FileDownloader.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/FileDownloader.java
index 619b9dcb7..5a30c9c6f 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/FileDownloader.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/FileDownloader.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/InternalActivity.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/InternalActivity.java
index 1a6ccec62..3e764a5bd 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/InternalActivity.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/InternalActivity.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/PackageInstaller.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/PackageInstaller.java
index 14b4d7021..4c800d648 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/PackageInstaller.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/PackageInstaller.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/UpgradeComponent.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/UpgradeComponent.java
index 3a6c01644..7589357f7 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/UpgradeComponent.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/activities/UpgradeComponent.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/AdvancedSettings.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/AdvancedSettings.java
index 9d1644391..e09317869 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/AdvancedSettings.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/AdvancedSettings.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/AttributesTableSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/AttributesTableSetting.java
index f1d5fbbdd..1bc2e020b 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/AttributesTableSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/AttributesTableSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/BluetoothDeviceCollection.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/BluetoothDeviceCollection.java
index 4889ece36..fa7fd3d4b 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/BluetoothDeviceCollection.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/BluetoothDeviceCollection.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/CheckBoxSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/CheckBoxSetting.java
index 98c6c9428..de70443f0 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/CheckBoxSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/CheckBoxSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ContractionTableSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ContractionTableSetting.java
index 22fafc896..50753c56d 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ContractionTableSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ContractionTableSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/DeviceCollection.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/DeviceCollection.java
index a3e8cc8c0..477289923 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/DeviceCollection.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/DeviceCollection.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/DeviceDescriptor.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/DeviceDescriptor.java
index 88d1d1820..f015e141d 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/DeviceDescriptor.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/DeviceDescriptor.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/DeviceManager.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/DeviceManager.java
index 320e05923..9f83af39d 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/DeviceManager.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/DeviceManager.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/GeneralSettings.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/GeneralSettings.java
index b725e2eff..56bb2ed79 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/GeneralSettings.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/GeneralSettings.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/KeyboardTableSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/KeyboardTableSetting.java
index 1082f3081..4f600d567 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/KeyboardTableSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/KeyboardTableSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogAccessibilityEventsSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogAccessibilityEventsSetting.java
index 4b2b23430..7e9ff6e8a 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogAccessibilityEventsSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogAccessibilityEventsSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogCategoriesSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogCategoriesSetting.java
index b77093cc8..4326aee95 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogCategoriesSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogCategoriesSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogKeyboardEventsSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogKeyboardEventsSetting.java
index 05697226d..d66f4276d 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogKeyboardEventsSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogKeyboardEventsSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogLevelSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogLevelSetting.java
index 68365d7bb..b553108e2 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogLevelSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogLevelSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogRenderedScreenSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogRenderedScreenSetting.java
index f77e7f24f..272e0c019 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogRenderedScreenSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogRenderedScreenSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogUnhandledEventsSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogUnhandledEventsSetting.java
index 7384eec98..506005b66 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogUnhandledEventsSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/LogUnhandledEventsSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/MessageSettings.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/MessageSettings.java
index 7e8111bf5..73ff99a7f 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/MessageSettings.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/MessageSettings.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/MultipleSelectionSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/MultipleSelectionSetting.java
index 51dfc4857..eb2927290 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/MultipleSelectionSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/MultipleSelectionSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/NavigationModeSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/NavigationModeSetting.java
index 829705c94..de57ebad1 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/NavigationModeSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/NavigationModeSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/PreferenceButton.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/PreferenceButton.java
index 6ee6fc356..cb043a2fb 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/PreferenceButton.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/PreferenceButton.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/PreferenceSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/PreferenceSetting.java
index 1191e85be..7cafbd4a7 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/PreferenceSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/PreferenceSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/PreferenceWrapper.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/PreferenceWrapper.java
index f03160533..38d7c50b1 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/PreferenceWrapper.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/PreferenceWrapper.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ReleaseBrailleDeviceSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ReleaseBrailleDeviceSetting.java
index 8a4424765..d6c75b74d 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ReleaseBrailleDeviceSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ReleaseBrailleDeviceSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SelectionSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SelectionSetting.java
index e3ba54ce9..c672a3703 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SelectionSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SelectionSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SerialDeviceCollection.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SerialDeviceCollection.java
index 261583997..1d06ce1b9 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SerialDeviceCollection.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SerialDeviceCollection.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SettingsActivity.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SettingsActivity.java
index 63a6ee652..6b6dd0e82 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SettingsActivity.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SettingsActivity.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SettingsFragment.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SettingsFragment.java
index e45875ba2..0da94eace 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SettingsFragment.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SettingsFragment.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ShowAlertsSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ShowAlertsSetting.java
index bd7bd0aad..7b5f9a0e7 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ShowAlertsSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ShowAlertsSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ShowAnnouncementsSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ShowAnnouncementsSetting.java
index 0571c4162..d398e432f 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ShowAnnouncementsSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ShowAnnouncementsSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ShowNotificationsSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ShowNotificationsSetting.java
index 7bd36967b..e1c1272b8 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ShowNotificationsSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/ShowNotificationsSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SingleSelectionSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SingleSelectionSetting.java
index 50cdcc704..395bdd826 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SingleSelectionSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SingleSelectionSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SpeechSupportSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SpeechSupportSetting.java
index bfdc133e4..e887609b2 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SpeechSupportSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/SpeechSupportSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/TextSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/TextSetting.java
index 6a26bfa15..9a5f840ca 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/TextSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/TextSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/TextTableSetting.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/TextTableSetting.java
index bb4e1b640..54a56ce8d 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/TextTableSetting.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/TextTableSetting.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/UsbDeviceAttachedMonitor.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/UsbDeviceAttachedMonitor.java
index f1c19438f..380fe0fc0 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/UsbDeviceAttachedMonitor.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/UsbDeviceAttachedMonitor.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/UsbDeviceCollection.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/UsbDeviceCollection.java
index 8ccc3bd08..63fa53822 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/UsbDeviceCollection.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/settings/UsbDeviceCollection.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/NewSpeechParadigm.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/NewSpeechParadigm.java
index 060097e8b..e747caef8 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/NewSpeechParadigm.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/NewSpeechParadigm.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/OldSpeechParadigm.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/OldSpeechParadigm.java
index cb5d45180..5f03d4e97 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/OldSpeechParadigm.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/OldSpeechParadigm.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/SpeechComponent.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/SpeechComponent.java
index c3e40cfce..fad2a705d 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/SpeechComponent.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/SpeechComponent.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/SpeechDriver.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/SpeechDriver.java
index b3d062d0e..f8fab4356 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/SpeechDriver.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/SpeechDriver.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/SpeechParadigm.java b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/SpeechParadigm.java
index 7a81c72b3..0d107f44d 100644
--- a/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/SpeechParadigm.java
+++ b/Android/Gradle/app/src/main/java/org/a11y/brltty/android/speech/SpeechParadigm.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/app/src/main/play/listings/en-CA/full-description.txt b/Android/Gradle/app/src/main/play/listings/en-CA/full-description.txt
index 45be53a62..b8624da82 100644
--- a/Android/Gradle/app/src/main/play/listings/en-CA/full-description.txt
+++ b/Android/Gradle/app/src/main/play/listings/en-CA/full-description.txt
@@ -1,3 +1,4 @@
+This app uses Android's AccessibilityService API. See below for the details.
 BRLTTY is an accessibility app. It's a screen reader that's been primarily designed for those who use a refreshable braille display (although it also includes support for speech). Detailed documentation for using it on Android is at: https://brltty.app/doc/Android.html
 
 Bluetooth and USB braille devices are supported (USB devices require the use of an OTG cable). Both computer and literary (contracted) braille are supported. Braille tables for many languages are included.
diff --git a/Android/Gradle/app/src/main/res/values/text-table.xml b/Android/Gradle/app/src/main/res/values/text-table.xml
index fd55a276a..0da93b6a3 100644
--- a/Android/Gradle/app/src/main/res/values/text-table.xml
+++ b/Android/Gradle/app/src/main/res/values/text-table.xml
@@ -42,6 +42,7 @@
   <string name="TEXT_TABLE_LABEL_gon" translatable="true">Gondi</string>
   <string name="TEXT_TABLE_LABEL_gu" translatable="true">Gujarati</string>
   <string name="TEXT_TABLE_LABEL_he" translatable="true">Hebrew</string>
+  <string name="TEXT_TABLE_LABEL_he_IL" translatable="true">Hebrew (Israel)</string>
   <string name="TEXT_TABLE_LABEL_hi" translatable="true">Hindi</string>
   <string name="TEXT_TABLE_LABEL_hr" translatable="true">Croatian</string>
   <string name="TEXT_TABLE_LABEL_hu" translatable="true">Hungarian</string>
@@ -133,6 +134,7 @@
     <item>@string/TEXT_TABLE_LABEL_gon</item>
     <item>@string/TEXT_TABLE_LABEL_gu</item>
     <item>@string/TEXT_TABLE_LABEL_he</item>
+    <item>@string/TEXT_TABLE_LABEL_he_IL</item>
     <item>@string/TEXT_TABLE_LABEL_hi</item>
     <item>@string/TEXT_TABLE_LABEL_hr</item>
     <item>@string/TEXT_TABLE_LABEL_hu</item>
@@ -225,6 +227,7 @@
     <item>gon</item>
     <item>gu</item>
     <item>he</item>
+    <item>he_IL</item>
     <item>hi</item>
     <item>hr</item>
     <item>hu</item>
diff --git a/Android/Gradle/brltty-build.gradle b/Android/Gradle/brltty-build.gradle
index 48404ee7f..d0b7cc972 100644
--- a/Android/Gradle/brltty-build.gradle
+++ b/Android/Gradle/brltty-build.gradle
@@ -24,8 +24,18 @@ Map getABI (Map properties) {
   return getABI(properties.ABI)
 }
 
+brltty.addConsumerTask = { Task producerTask, String consumerName ->
+  gradle.projectsEvaluated {
+    def consumerTask = producerTask.project.tasks.findByName(consumerName)
+
+    if (consumerTask != null) {
+      consumerTask.mustRunAfter producerTask
+    }
+  }
+}
+
 Task newTask (Project project, String name, Class<DefaultTask> type=DefaultTask, Closure closure) {
-  Task task = project.tasks.register(name, type, closure).get()
+  def task = project.tasks.register(name, type, closure).get()
 
   task.configure {
     group "build"
@@ -93,7 +103,7 @@ Task newMakeComponentsTask (Map properties) {
 }
 
 Task newAddJarsTask (Map properties) {
-  return newTask(properties, "brlttyAddJars", Copy) {
+  def task = newTask(properties, "brlttyAddJars", Copy) {
     description "Add the ${properties.componentName}'s ${properties.ABI} jars to the build."
     dependsOn properties.makeComponentsTask
     into getJarsPath(properties)
@@ -106,10 +116,15 @@ Task newAddJarsTask (Map properties) {
       include "${jar}.jar"
     }
   }
+
+  brltty.addConsumerTask(task, "mergeDebugJavaResource")
+  brltty.addConsumerTask(task, "copyDebugJniLibsProjectAndLocalJars")
+
+  return task
 }
 
 Task newAddLibrariesTask (Map properties) {
-  return newTask(properties, "brlttyAddLibraries", Copy) {
+  def task = newTask(properties, "brlttyAddLibraries", Copy) {
     description "Add the ${properties.componentName}'s ${properties.ABI} libraries to the build."
     dependsOn properties.makeComponentsTask
     into getABIPath(properties)
@@ -122,6 +137,11 @@ Task newAddLibrariesTask (Map properties) {
       include "lib${library}.so"
     }
   }
+
+  brltty.addConsumerTask(task, "mergeDebugJniLibFolders")
+  brltty.addConsumerTask(task, "mergeReleaseJniLibFolders")
+
+  return task
 }
 
 Task newMakeCleanTask (Map properties) {
@@ -205,7 +225,7 @@ brltty.addAssembleTask = { Project project, Task assembleTask ->
   }
 }
 
-brltty.addTasks = { Map properties ->
+brltty.buildComponent = { Map properties ->
   addTasks(properties)
   brltty.addAssembleTask(properties.project, properties.assembleTask)
   clean.dependsOn properties.cleanTask
diff --git a/Android/Gradle/build.gradle b/Android/Gradle/build.gradle
index 82894a8ef..1d668f41f 100644
--- a/Android/Gradle/build.gradle
+++ b/Android/Gradle/build.gradle
@@ -6,7 +6,7 @@ buildscript {
   }
 
   dependencies {
-    classpath "com.android.tools.build:gradle:4.1.3"
+    classpath "com.android.tools.build:gradle:8.3.0"
   }
 }
 
diff --git a/Android/Gradle/core/brltty-component.gradle b/Android/Gradle/core/brltty-component.gradle
new file mode 100644
index 000000000..834b8569e
--- /dev/null
+++ b/Android/Gradle/core/brltty-component.gradle
@@ -0,0 +1,30 @@
+brltty.buildComponent(
+  [ componentName: "core",
+    project: project,
+    makeSubdirectory: brltty.native.coreSubdirectory,
+
+    makeTargets: [
+      brltty.native.coreLibrary,
+      brltty.native.coreWrapper,
+      brltty.native.coreBindings,
+
+      "braille-drivers",
+      "speech-drivers",
+      "screen-drivers",
+    ],
+
+    libraries: [
+      "brltty_core",
+      "brltty_jni",
+
+      "brlttyb??",
+      "brlttys??",
+      "brlttyx??"
+    ],
+
+    librarySubdirectories: [
+      brltty.native.coreSubdirectory,
+      brltty.native.driversSubdirectory
+    ],
+  ]
+)
diff --git a/Android/Gradle/core/brltty.gradle b/Android/Gradle/core/brltty.gradle
deleted file mode 100644
index bcec98ba1..000000000
--- a/Android/Gradle/core/brltty.gradle
+++ /dev/null
@@ -1,29 +0,0 @@
-brltty.addTasks([
-  project: project,
-  componentName: "core",
-  makeSubdirectory: brltty.native.coreSubdirectory,
-
-  makeTargets: [
-    brltty.native.coreLibrary,
-    brltty.native.coreWrapper,
-    brltty.native.coreBindings,
-
-    "braille-drivers",
-    "speech-drivers",
-    "screen-drivers",
-  ],
-
-  libraries: [
-    "brltty_core",
-    "brltty_jni",
-
-    "brlttyb??",
-    "brlttys??",
-    "brlttyx??"
-  ],
-
-  librarySubdirectories: [
-    brltty.native.coreSubdirectory,
-    brltty.native.driversSubdirectory
-  ],
-])
diff --git a/Android/Gradle/core/build.gradle b/Android/Gradle/core/build.gradle
index e506b9130..b65e83597 100644
--- a/Android/Gradle/core/build.gradle
+++ b/Android/Gradle/core/build.gradle
@@ -6,9 +6,11 @@ description = """
 "${project.name}" is a Java wrapper for the native "${rootProject.name}" code.
 """
 
-apply from: "brltty.gradle"
+apply from: "brltty-component.gradle"
 
 android {
+  namespace "org.a11y.brltty.core"
+
   compileSdkVersion "android-34"
   buildToolsVersion "29.0.3"
 
diff --git a/Android/Gradle/core/src/main/java/org/a11y/brltty/core/ArgumentsBuilder.java b/Android/Gradle/core/src/main/java/org/a11y/brltty/core/ArgumentsBuilder.java
index c057899e8..22f61aa2c 100644
--- a/Android/Gradle/core/src/main/java/org/a11y/brltty/core/ArgumentsBuilder.java
+++ b/Android/Gradle/core/src/main/java/org/a11y/brltty/core/ArgumentsBuilder.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/core/src/main/java/org/a11y/brltty/core/Braille.java b/Android/Gradle/core/src/main/java/org/a11y/brltty/core/Braille.java
index ff75c1dbc..14035a0b5 100644
--- a/Android/Gradle/core/src/main/java/org/a11y/brltty/core/Braille.java
+++ b/Android/Gradle/core/src/main/java/org/a11y/brltty/core/Braille.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/core/src/main/java/org/a11y/brltty/core/CoreWrapper.java b/Android/Gradle/core/src/main/java/org/a11y/brltty/core/CoreWrapper.java
index 5eb23864a..e3a4cbfe9 100644
--- a/Android/Gradle/core/src/main/java/org/a11y/brltty/core/CoreWrapper.java
+++ b/Android/Gradle/core/src/main/java/org/a11y/brltty/core/CoreWrapper.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/core/src/main/java/org/a11y/brltty/core/LogLevel.java b/Android/Gradle/core/src/main/java/org/a11y/brltty/core/LogLevel.java
index 842f65d8a..76ecc679d 100644
--- a/Android/Gradle/core/src/main/java/org/a11y/brltty/core/LogLevel.java
+++ b/Android/Gradle/core/src/main/java/org/a11y/brltty/core/LogLevel.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/core/src/main/java/org/a11y/brltty/core/ProgramExitStatus.java b/Android/Gradle/core/src/main/java/org/a11y/brltty/core/ProgramExitStatus.java
index 30668c2f1..e64d638c6 100644
--- a/Android/Gradle/core/src/main/java/org/a11y/brltty/core/ProgramExitStatus.java
+++ b/Android/Gradle/core/src/main/java/org/a11y/brltty/core/ProgramExitStatus.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Android/Gradle/gradle/wrapper/gradle-wrapper.properties b/Android/Gradle/gradle/wrapper/gradle-wrapper.properties
index f5293ee73..a2e522259 100644
--- a/Android/Gradle/gradle/wrapper/gradle-wrapper.properties
+++ b/Android/Gradle/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
diff --git a/Android/Gradle/publish.mk b/Android/Gradle/publish.mk
index 8c7cd1724..870a42f9e 100644
--- a/Android/Gradle/publish.mk
+++ b/Android/Gradle/publish.mk
@@ -19,7 +19,7 @@ promote-to-production:
 	$(GRADLE_PROMOTE_COMMAND) --from-track beta --promote-track production --release-status completed
 
 download-listing:
-	$(GRADLE_WRAPPER_COMMAND) bootstrap
+	$(GRADLE_WRAPPER_COMMAND) bootstrapListing
 
 publish-listing:
 	$(GRADLE_WRAPPER_COMMAND) publishListing
diff --git a/Android/Tools/mksettings b/Android/Tools/mksettings
index 4e7a33aa1..1d8ea9524 100755
--- a/Android/Tools/mksettings
+++ b/Android/Tools/mksettings
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Android/Tools/newstrings b/Android/Tools/newstrings
index 6f090a2f2..e26307477 100755
--- a/Android/Tools/newstrings
+++ b/Android/Tools/newstrings
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Android/Tools/prologue.tcl b/Android/Tools/prologue.tcl
index 7076d5fed..f99c09681 100644
--- a/Android/Tools/prologue.tcl
+++ b/Android/Tools/prologue.tcl
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Android/Tools/rebuild b/Android/Tools/rebuild
index 44fcdc0ca..19c84aef4 100755
--- a/Android/Tools/rebuild
+++ b/Android/Tools/rebuild
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Authorization/Polkit/Makefile.in b/Authorization/Polkit/Makefile.in
index 74d240579..88e97ccdf 100644
--- a/Authorization/Polkit/Makefile.in
+++ b/Authorization/Polkit/Makefile.in
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Autostart/AppStream/Makefile.in b/Autostart/AppStream/Makefile.in
index b3c0d037a..43df2815c 100644
--- a/Autostart/AppStream/Makefile.in
+++ b/Autostart/AppStream/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Autostart/AppStream/org.a11y.brltty.metainfo.xml b/Autostart/AppStream/org.a11y.brltty.metainfo.xml
index 0d9e787df..b7f201433 100644
--- a/Autostart/AppStream/org.a11y.brltty.metainfo.xml
+++ b/Autostart/AppStream/org.a11y.brltty.metainfo.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!--
-  Copyright (C) 1995-2024 by The BRLTTY Developers.
+  Copyright (C) 1995-2025 by The BRLTTY Developers.
  
   This file is provided, free of charge and as-is, under the terms of the
   All Permissive License as published by the Free Software Foundation.
diff --git a/Autostart/Hotplug/brltty b/Autostart/Hotplug/brltty
index d1b35f9f2..88a5fdf67 100755
--- a/Autostart/Hotplug/brltty
+++ b/Autostart/Hotplug/brltty
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Autostart/Hotplug/brltty.usermap b/Autostart/Hotplug/brltty.usermap
index f17e31c34..4a9464d01 100644
--- a/Autostart/Hotplug/brltty.usermap
+++ b/Autostart/Hotplug/brltty.usermap
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Autostart/Systemd/Makefile.in b/Autostart/Systemd/Makefile.in
index fbc41111e..3295eba9c 100644
--- a/Autostart/Systemd/Makefile.in
+++ b/Autostart/Systemd/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -34,8 +34,8 @@ install-units: install-units-directory
 	$(INSTALL_DATA) $(SRC_DIR)/brltty@.path $(SYSTEMD_UNITS_DIRECTORY)
 	$(INSTALL_DATA) $(SRC_DIR)/brltty.path $(SYSTEMD_UNITS_DIRECTORY)
 
-install-wrapper: install-commands-directory
-	$(INSTALL_SCRIPT) $(SRC_DIR)/systemd-wrapper $(INSTALL_COMMANDS_DIRECTORY)
+install-wrapper: install-helpers-directory
+	$(INSTALL_SCRIPT) $(SRC_DIR)/systemd-wrapper $(INSTALL_HELPERS_DIRECTORY)
 
 install-users-directory:
 	$(INSTALL_DIRECTORY) $(SYSTEMD_USERS_DIRECTORY)
@@ -53,7 +53,7 @@ uninstall:
 	-rm -f $(SYSTEMD_UNITS_DIRECTORY)/$(PACKAGE_TARNAME).*
 	-rm -f $(SYSTEMD_UNITS_DIRECTORY)/$(PACKAGE_TARNAME)@.*
 	-rm -f $(SYSTEMD_UNITS_DIRECTORY)/$(PACKAGE_TARNAME)-*
-	-rm -f $(INSTALL_COMMANDS_DIRECTORY)/systemd-*
+	-rm -f $(INSTALL_HELPERS_DIRECTORY)/systemd-*
 	-rm -f $(SYSTEMD_USERS_FILE)
 	-rm -f $(SYSTEMD_FILES_FILE)
 
diff --git a/Autostart/Systemd/brltty-device@.service b/Autostart/Systemd/brltty-device@.service
index 108915606..044601a4c 100644
--- a/Autostart/Systemd/brltty-device@.service
+++ b/Autostart/Systemd/brltty-device@.service
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Autostart/Systemd/brltty.path b/Autostart/Systemd/brltty.path
index 61c6ba916..d837187a2 100644
--- a/Autostart/Systemd/brltty.path
+++ b/Autostart/Systemd/brltty.path
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Autostart/Systemd/brltty@.path b/Autostart/Systemd/brltty@.path
index 4c0d0a500..3dbccca05 100644
--- a/Autostart/Systemd/brltty@.path
+++ b/Autostart/Systemd/brltty@.path
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Autostart/Systemd/brltty@.service.in b/Autostart/Systemd/brltty@.service.in
index 6a7364e4f..be3a65ec4 100644
--- a/Autostart/Systemd/brltty@.service.in
+++ b/Autostart/Systemd/brltty@.service.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -49,7 +49,7 @@ Environment="BRLTTY_PID_FILE=%t/brltty/brltty-%i.pid"
 
 Type=@SYSTEMD_SERVICE_TYPE@
 Environment="BRLTTY_EXECUTABLE_ARGUMENTS=@SYSTEMD_SERVICE_ARGUMENTS@"
-ExecStart=@COMMANDS_DIRECTORY@/systemd-wrapper
+ExecStart=@HELPERS_DIRECTORY@/systemd-wrapper
 
 TimeoutStartSec=5
 TimeoutStopSec=10
diff --git a/Autostart/Systemd/systemd-wrapper b/Autostart/Systemd/systemd-wrapper
index 929ce8575..f1b3a621d 100755
--- a/Autostart/Systemd/systemd-wrapper
+++ b/Autostart/Systemd/systemd-wrapper
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Autostart/Systemd/sysusers b/Autostart/Systemd/sysusers
index 620ffe7d8..9a7e53cf3 100644
--- a/Autostart/Systemd/sysusers
+++ b/Autostart/Systemd/sysusers
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Autostart/Systemd/tmpfiles.in b/Autostart/Systemd/tmpfiles.in
index 2cc4cc136..9407e3f3c 100644
--- a/Autostart/Systemd/tmpfiles.in
+++ b/Autostart/Systemd/tmpfiles.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Autostart/Udev/Makefile.in b/Autostart/Udev/Makefile.in
index 33ff5ff67..b32dc0253 100644
--- a/Autostart/Udev/Makefile.in
+++ b/Autostart/Udev/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -44,8 +44,8 @@ usb-generic:
 	cp $(UDEV_NAME_USB_TEMPLATE) $(UDEV_NAME_USB_GENERIC)
 	$(UPDUSBDEVS) -onlygeneric udev:$(UDEV_NAME_USB_GENERIC)
 
-install-wrapper: install-commands-directory
-	$(INSTALL_SCRIPT) $(SRC_DIR)/udev-wrapper $(INSTALL_COMMANDS_DIRECTORY)
+install-wrapper: install-helpers-directory
+	$(INSTALL_SCRIPT) $(SRC_DIR)/udev-wrapper $(INSTALL_HELPERS_DIRECTORY)
 
 install-rules-directory:
 	$(INSTALL_DIRECTORY) $(UDEV_RULES_DIRECTORY)
@@ -71,7 +71,7 @@ install: install-wrapper install-rules
 uninstall:
 	-rm -f $(UDEV_RULES_DIRECTORY)/?*-$(PACKAGE_TARNAME).$(UDEV_RULES_EXTENSION)
 	-rm -f $(UDEV_RULES_DIRECTORY)/?*-$(PACKAGE_TARNAME)-*.$(UDEV_RULES_EXTENSION)
-	-rm -f $(INSTALL_COMMANDS_DIRECTORY)/udev-*
+	-rm -f $(INSTALL_HELPERS_DIRECTORY)/udev-*
 
 clean::
 	-rm -f $(UDEV_NAME_USB_CUSTOMIZED)
diff --git a/Autostart/Udev/hid.rules b/Autostart/Udev/hid.rules
index 7947c50be..dfd8bc237 100644
--- a/Autostart/Udev/hid.rules
+++ b/Autostart/Udev/hid.rules
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Autostart/Udev/udev-wrapper b/Autostart/Udev/udev-wrapper
index 966de7d23..0ecdb7552 100755
--- a/Autostart/Udev/udev-wrapper
+++ b/Autostart/Udev/udev-wrapper
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Autostart/Udev/uinput.rules b/Autostart/Udev/uinput.rules
index 62044df92..0ded3cc88 100644
--- a/Autostart/Udev/uinput.rules
+++ b/Autostart/Udev/uinput.rules
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Autostart/Udev/usb-template.rules.in b/Autostart/Udev/usb-template.rules.in
index 060b19e7f..a530eaf23 100644
--- a/Autostart/Udev/usb-template.rules.in
+++ b/Autostart/Udev/usb-template.rules.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -47,11 +47,11 @@ ACTION=="remove", GOTO="brltty_udev_remove"
 GOTO="brltty_device_end"
 
 LABEL="brltty_udev_add"
-RUN+="@COMMANDS_DIRECTORY@/udev-wrapper"
+RUN+="@HELPERS_DIRECTORY@/udev-wrapper"
 GOTO="brltty_device_end"
 
 LABEL="brltty_udev_remove"
-RUN+="@COMMANDS_DIRECTORY@/udev-wrapper -C"
+RUN+="@HELPERS_DIRECTORY@/udev-wrapper -C"
 GOTO="brltty_device_end"
 
 LABEL="brltty_upstart"
diff --git a/Autostart/X11/Makefile.in b/Autostart/X11/Makefile.in
index 8c7ec6b74..0b8e36cf8 100644
--- a/Autostart/X11/Makefile.in
+++ b/Autostart/X11/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Emacs/Makefile.in b/Bindings/Emacs/Makefile.in
index 58055c1a3..696654b31 100644
--- a/Bindings/Emacs/Makefile.in
+++ b/Bindings/Emacs/Makefile.in
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Emacs/apitest b/Bindings/Emacs/apitest
index 39e0efbfb..9eaf41dc8 100755
--- a/Bindings/Emacs/apitest
+++ b/Bindings/Emacs/apitest
@@ -2,7 +2,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Emacs/bindings.c b/Bindings/Emacs/bindings.c
index 690b75fa6..b483c7ef6 100644
--- a/Bindings/Emacs/bindings.c
+++ b/Bindings/Emacs/bindings.c
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+ * Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
  *
  * libbrlapi comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Bindings/Emacs/bindings.m4 b/Bindings/Emacs/bindings.m4
index 30a3b4f6e..306586b63 100644
--- a/Bindings/Emacs/bindings.m4
+++ b/Bindings/Emacs/bindings.m4
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Java/APIError.java b/Bindings/Java/APIError.java
index fd1c25d0e..be2cf959a 100644
--- a/Bindings/Java/APIError.java
+++ b/Bindings/Java/APIError.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/APIException.java b/Bindings/Java/APIException.java
index 5d76984da..e511fc1d4 100644
--- a/Bindings/Java/APIException.java
+++ b/Bindings/Java/APIException.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/APIVersion.java b/Bindings/Java/APIVersion.java
index c0b38d920..d454efb6c 100644
--- a/Bindings/Java/APIVersion.java
+++ b/Bindings/Java/APIVersion.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/AuthenticationException.java b/Bindings/Java/AuthenticationException.java
index ca5255e49..6d014eb08 100644
--- a/Bindings/Java/AuthenticationException.java
+++ b/Bindings/Java/AuthenticationException.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/BitMask.java b/Bindings/Java/BitMask.java
index 83e1d03dd..0335bdf1a 100644
--- a/Bindings/Java/BitMask.java
+++ b/Bindings/Java/BitMask.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/Client.java b/Bindings/Java/Client.java
index f205379ac..afe03c626 100644
--- a/Bindings/Java/Client.java
+++ b/Bindings/Java/Client.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/CommandKeycode.java b/Bindings/Java/CommandKeycode.java
index 15a6e3e2f..538078b6a 100644
--- a/Bindings/Java/CommandKeycode.java
+++ b/Bindings/Java/CommandKeycode.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/Component.java b/Bindings/Java/Component.java
index e44d7d218..15c26157b 100644
--- a/Bindings/Java/Component.java
+++ b/Bindings/Java/Component.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/ConnectException.java b/Bindings/Java/ConnectException.java
index 7e9a2fb86..a8f28c69e 100644
--- a/Bindings/Java/ConnectException.java
+++ b/Bindings/Java/ConnectException.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/Connection.java b/Bindings/Java/Connection.java
index 899e8be46..62a8f64ad 100644
--- a/Bindings/Java/Connection.java
+++ b/Bindings/Java/Connection.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/ConnectionBase.java b/Bindings/Java/ConnectionBase.java
index 2a643b322..ffb8dd13c 100644
--- a/Bindings/Java/ConnectionBase.java
+++ b/Bindings/Java/ConnectionBase.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/ConnectionSettings.java b/Bindings/Java/ConnectionSettings.java
index 403bcd417..e557f4a16 100644
--- a/Bindings/Java/ConnectionSettings.java
+++ b/Bindings/Java/ConnectionSettings.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/CursorPositionUsage.java b/Bindings/Java/CursorPositionUsage.java
index 7641ad2b8..1d7ed897f 100644
--- a/Bindings/Java/CursorPositionUsage.java
+++ b/Bindings/Java/CursorPositionUsage.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/DisplayNumberUsage.java b/Bindings/Java/DisplayNumberUsage.java
index be674d97a..9077a93ec 100644
--- a/Bindings/Java/DisplayNumberUsage.java
+++ b/Bindings/Java/DisplayNumberUsage.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/DisplaySize.java b/Bindings/Java/DisplaySize.java
index 97f991d4a..1ba20d785 100644
--- a/Bindings/Java/DisplaySize.java
+++ b/Bindings/Java/DisplaySize.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/DriverKeycode.java b/Bindings/Java/DriverKeycode.java
index cc966c0ad..627de0294 100644
--- a/Bindings/Java/DriverKeycode.java
+++ b/Bindings/Java/DriverKeycode.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/ExitException.java b/Bindings/Java/ExitException.java
index ec7339bb0..7c3201dfd 100644
--- a/Bindings/Java/ExitException.java
+++ b/Bindings/Java/ExitException.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/ExternalException.java b/Bindings/Java/ExternalException.java
index dccf0174a..05dde5feb 100644
--- a/Bindings/Java/ExternalException.java
+++ b/Bindings/Java/ExternalException.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/GlobalParameter.java b/Bindings/Java/GlobalParameter.java
index 906b38229..e9d66fb83 100644
--- a/Bindings/Java/GlobalParameter.java
+++ b/Bindings/Java/GlobalParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/HostException.java b/Bindings/Java/HostException.java
index 5677179e7..29228df92 100644
--- a/Bindings/Java/HostException.java
+++ b/Bindings/Java/HostException.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/Keycode.java b/Bindings/Java/Keycode.java
index 88089f274..725094755 100644
--- a/Bindings/Java/Keycode.java
+++ b/Bindings/Java/Keycode.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/KeywordMap.java b/Bindings/Java/KeywordMap.java
index 2adbe433f..3cc8fdf24 100644
--- a/Bindings/Java/KeywordMap.java
+++ b/Bindings/Java/KeywordMap.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/LocalParameter.java b/Bindings/Java/LocalParameter.java
index 10aa3c836..609d4d3cd 100644
--- a/Bindings/Java/LocalParameter.java
+++ b/Bindings/Java/LocalParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/LostConnectionException.java b/Bindings/Java/LostConnectionException.java
index eecad5458..6df9c86c8 100644
--- a/Bindings/Java/LostConnectionException.java
+++ b/Bindings/Java/LostConnectionException.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/Makefile.in b/Bindings/Java/Makefile.in
index ffbb97dc9..5c25b7c83 100644
--- a/Bindings/Java/Makefile.in
+++ b/Bindings/Java/Makefile.in
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by
+# Copyright (C) 2006-2025 by
 #   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 #   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
 #
diff --git a/Bindings/Java/NativeComponent.java b/Bindings/Java/NativeComponent.java
index 8297fa431..f8b9a9a7a 100644
--- a/Bindings/Java/NativeComponent.java
+++ b/Bindings/Java/NativeComponent.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/OperandException.java b/Bindings/Java/OperandException.java
index 8de02a838..3ee9d581a 100644
--- a/Bindings/Java/OperandException.java
+++ b/Bindings/Java/OperandException.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/OperandUsage.java b/Bindings/Java/OperandUsage.java
index c79ef3474..277233303 100644
--- a/Bindings/Java/OperandUsage.java
+++ b/Bindings/Java/OperandUsage.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/Parameter.java b/Bindings/Java/Parameter.java
index fd006478d..53a3b005e 100644
--- a/Bindings/Java/Parameter.java
+++ b/Bindings/Java/Parameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
@@ -54,6 +54,10 @@ public abstract class Parameter extends ParameterComponent {
   public abstract int getParameter ();
   public abstract boolean isGlobal ();
 
+  public boolean hasSubparam () {
+    return false;
+  }
+
   public boolean isHidable () {
     return false;
   }
diff --git a/Bindings/Java/ParameterComponent.java b/Bindings/Java/ParameterComponent.java
index d9672a02d..695b7b8af 100644
--- a/Bindings/Java/ParameterComponent.java
+++ b/Bindings/Java/ParameterComponent.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/ParameterWatcher.java b/Bindings/Java/ParameterWatcher.java
index 47f10f6d7..826dd2227 100644
--- a/Bindings/Java/ParameterWatcher.java
+++ b/Bindings/Java/ParameterWatcher.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/Parameters.java b/Bindings/Java/Parameters.java
index 283175464..b53626859 100644
--- a/Bindings/Java/Parameters.java
+++ b/Bindings/Java/Parameters.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/Parse.java b/Bindings/Java/Parse.java
index 67bbaf952..5688ba767 100644
--- a/Bindings/Java/Parse.java
+++ b/Bindings/Java/Parse.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/Program.java b/Bindings/Java/Program.java
index 5a08d3791..29ca592f7 100644
--- a/Bindings/Java/Program.java
+++ b/Bindings/Java/Program.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/ProgramComponent.java b/Bindings/Java/ProgramComponent.java
index 8a903500e..116e0839e 100644
--- a/Bindings/Java/ProgramComponent.java
+++ b/Bindings/Java/ProgramComponent.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/ProgramException.java b/Bindings/Java/ProgramException.java
index 89d4e7c3c..0fa9ca265 100644
--- a/Bindings/Java/ProgramException.java
+++ b/Bindings/Java/ProgramException.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/RowCells.java b/Bindings/Java/RowCells.java
index 1891db25f..61688da1d 100644
--- a/Bindings/Java/RowCells.java
+++ b/Bindings/Java/RowCells.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/SemanticException.java b/Bindings/Java/SemanticException.java
index 57c481201..c71e95488 100644
--- a/Bindings/Java/SemanticException.java
+++ b/Bindings/Java/SemanticException.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/Strings.java b/Bindings/Java/Strings.java
index 6587b1e80..42e208750 100644
--- a/Bindings/Java/Strings.java
+++ b/Bindings/Java/Strings.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/SyntaxException.java b/Bindings/Java/SyntaxException.java
index 1c3baf7aa..4d3780ac6 100644
--- a/Bindings/Java/SyntaxException.java
+++ b/Bindings/Java/SyntaxException.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/TooManyParametersException.java b/Bindings/Java/TooManyParametersException.java
index 284a0c90d..8a1f53551 100644
--- a/Bindings/Java/TooManyParametersException.java
+++ b/Bindings/Java/TooManyParametersException.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/UnavailableServiceException.java b/Bindings/Java/UnavailableServiceException.java
index da7179321..b5e246c90 100644
--- a/Bindings/Java/UnavailableServiceException.java
+++ b/Bindings/Java/UnavailableServiceException.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/UnknownHostException.java b/Bindings/Java/UnknownHostException.java
index 17cc87229..55f42fecd 100644
--- a/Bindings/Java/UnknownHostException.java
+++ b/Bindings/Java/UnknownHostException.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/WriteArguments.java b/Bindings/Java/WriteArguments.java
index c535154c7..a10e72314 100644
--- a/Bindings/Java/WriteArguments.java
+++ b/Bindings/Java/WriteArguments.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/apitool b/Bindings/Java/apitool
index 6d2daed0a..9d9c42b30 100755
--- a/Bindings/Java/apitool
+++ b/Bindings/Java/apitool
@@ -2,7 +2,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by
+# Copyright (C) 2006-2025 by
 #   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 #   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
 #
diff --git a/Bindings/Java/bindings.c b/Bindings/Java/bindings.c
index d8e48e816..45e666c55 100644
--- a/Bindings/Java/bindings.c
+++ b/Bindings/Java/bindings.c
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/bindings.h b/Bindings/Java/bindings.h
index abf3c4f7c..721dfe866 100644
--- a/Bindings/Java/bindings.h
+++ b/Bindings/Java/bindings.h
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/bindings.m4 b/Bindings/Java/bindings.m4
index d9b2458b6..0d3996e8d 100644
--- a/Bindings/Java/bindings.m4
+++ b/Bindings/Java/bindings.m4
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by
+# Copyright (C) 2006-2025 by
 #   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 #   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
 #
diff --git a/Bindings/Java/clients/ApiErrorClient.java b/Bindings/Java/clients/ApiErrorClient.java
index 2cb9a9bb7..6612bf80e 100644
--- a/Bindings/Java/clients/ApiErrorClient.java
+++ b/Bindings/Java/clients/ApiErrorClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/clients/ApiExceptionClient.java b/Bindings/Java/clients/ApiExceptionClient.java
index b9ecc112f..867a9128f 100644
--- a/Bindings/Java/clients/ApiExceptionClient.java
+++ b/Bindings/Java/clients/ApiExceptionClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/clients/BoundCommandsClient.java b/Bindings/Java/clients/BoundCommandsClient.java
index 85e622515..ef8be51a6 100644
--- a/Bindings/Java/clients/BoundCommandsClient.java
+++ b/Bindings/Java/clients/BoundCommandsClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/clients/ComputerBrailleClient.java b/Bindings/Java/clients/ComputerBrailleClient.java
index bd34cc3f7..c8a95f16c 100644
--- a/Bindings/Java/clients/ComputerBrailleClient.java
+++ b/Bindings/Java/clients/ComputerBrailleClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/clients/DriverKeysClient.java b/Bindings/Java/clients/DriverKeysClient.java
index 94d598b5b..542dd638d 100644
--- a/Bindings/Java/clients/DriverKeysClient.java
+++ b/Bindings/Java/clients/DriverKeysClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/clients/EchoClient.java b/Bindings/Java/clients/EchoClient.java
index 327e99ba9..efe34b8eb 100644
--- a/Bindings/Java/clients/EchoClient.java
+++ b/Bindings/Java/clients/EchoClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/clients/GetDriverClient.java b/Bindings/Java/clients/GetDriverClient.java
index f2d4cb5f8..dc5ac007b 100644
--- a/Bindings/Java/clients/GetDriverClient.java
+++ b/Bindings/Java/clients/GetDriverClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/clients/GetModelClient.java b/Bindings/Java/clients/GetModelClient.java
index dd8f75e26..27d4011f9 100644
--- a/Bindings/Java/clients/GetModelClient.java
+++ b/Bindings/Java/clients/GetModelClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/clients/GetSizeClient.java b/Bindings/Java/clients/GetSizeClient.java
index 629f80a42..d96fb606f 100644
--- a/Bindings/Java/clients/GetSizeClient.java
+++ b/Bindings/Java/clients/GetSizeClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/clients/ListParametersClient.java b/Bindings/Java/clients/ListParametersClient.java
index db1f2b1b8..66ec577fa 100644
--- a/Bindings/Java/clients/ListParametersClient.java
+++ b/Bindings/Java/clients/ListParametersClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
@@ -53,6 +53,8 @@ public class ListParametersClient extends Client {
 
       for (Parameter parameter : parameterArray) {
         if (parameter.isHidable()) continue;
+        if (parameter.hasSubparam()) continue;
+
         String value = parameter.toString();
         if (value != null) printf("%s: %s\n", parameter.getLabel(), value);
       }
@@ -61,8 +63,16 @@ public class ListParametersClient extends Client {
       String value;
 
       if (subparamValue == null) {
+        if (parameter.hasSubparam()) {
+          throw new SemanticException("subparam not specified: %s", parameter.getName());
+        }
+
         value = parameter.toString();
       } else {
+        if (!parameter.hasSubparam()) {
+          throw new SemanticException("has no subparam: %s", parameter.getName());
+        }
+
         long subparam = subparamValue;
         value = parameter.toString(subparam);
       }
diff --git a/Bindings/Java/clients/PauseClient.java b/Bindings/Java/clients/PauseClient.java
index 138620bad..2385c9a7b 100644
--- a/Bindings/Java/clients/PauseClient.java
+++ b/Bindings/Java/clients/PauseClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/clients/SetParameterClient.java b/Bindings/Java/clients/SetParameterClient.java
index 26b373ca3..d937b365d 100644
--- a/Bindings/Java/clients/SetParameterClient.java
+++ b/Bindings/Java/clients/SetParameterClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/clients/WriteArgumentsClient.java b/Bindings/Java/clients/WriteArgumentsClient.java
index 4400abd72..6d11b91ec 100644
--- a/Bindings/Java/clients/WriteArgumentsClient.java
+++ b/Bindings/Java/clients/WriteArgumentsClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/clients/WriteDotsClient.java b/Bindings/Java/clients/WriteDotsClient.java
index 3662880a1..2d1964723 100644
--- a/Bindings/Java/clients/WriteDotsClient.java
+++ b/Bindings/Java/clients/WriteDotsClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/clients/WriteTextClient.java b/Bindings/Java/clients/WriteTextClient.java
index 7ef4642c1..76368f687 100644
--- a/Bindings/Java/clients/WriteTextClient.java
+++ b/Bindings/Java/clients/WriteTextClient.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/commands/ApiToolCommand.java b/Bindings/Java/commands/ApiToolCommand.java
index d30449b8b..c4ce4fe29 100644
--- a/Bindings/Java/commands/ApiToolCommand.java
+++ b/Bindings/Java/commands/ApiToolCommand.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/constants.awk b/Bindings/Java/constants.awk
index f3955f40d..692639668 100644
--- a/Bindings/Java/constants.awk
+++ b/Bindings/Java/constants.awk
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by
+# Copyright (C) 2006-2025 by
 #   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 #   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
 #
diff --git a/Bindings/Java/parameters/AudibleAlertsParameter.java b/Bindings/Java/parameters/AudibleAlertsParameter.java
index 692df308c..2c1f1ba69 100644
--- a/Bindings/Java/parameters/AudibleAlertsParameter.java
+++ b/Bindings/Java/parameters/AudibleAlertsParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/BoundCommandKeycodesParameter.java b/Bindings/Java/parameters/BoundCommandKeycodesParameter.java
index ba2e68928..1665fd51b 100644
--- a/Bindings/Java/parameters/BoundCommandKeycodesParameter.java
+++ b/Bindings/Java/parameters/BoundCommandKeycodesParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/ClientPriorityParameter.java b/Bindings/Java/parameters/ClientPriorityParameter.java
index 82bd82076..c0534429e 100644
--- a/Bindings/Java/parameters/ClientPriorityParameter.java
+++ b/Bindings/Java/parameters/ClientPriorityParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/ClipboardContentParameter.java b/Bindings/Java/parameters/ClipboardContentParameter.java
index 08a4f66f4..4d642a8b7 100644
--- a/Bindings/Java/parameters/ClipboardContentParameter.java
+++ b/Bindings/Java/parameters/ClipboardContentParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/CommandKeycodeNameParameter.java b/Bindings/Java/parameters/CommandKeycodeNameParameter.java
index ff843f224..01760b9ac 100644
--- a/Bindings/Java/parameters/CommandKeycodeNameParameter.java
+++ b/Bindings/Java/parameters/CommandKeycodeNameParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
@@ -30,6 +30,11 @@ public class CommandKeycodeNameParameter extends GlobalParameter {
     return Constants.PARAM_COMMAND_KEYCODE_NAME;
   }
 
+  @Override
+  public boolean hasSubparam () {
+    return true;
+  }
+
   @Override
   public final String get (long code) {
     return asString(getValue(code));
diff --git a/Bindings/Java/parameters/CommandKeycodeSummaryParameter.java b/Bindings/Java/parameters/CommandKeycodeSummaryParameter.java
index b32b6e4b7..62a57ede4 100644
--- a/Bindings/Java/parameters/CommandKeycodeSummaryParameter.java
+++ b/Bindings/Java/parameters/CommandKeycodeSummaryParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
@@ -30,6 +30,11 @@ public class CommandKeycodeSummaryParameter extends GlobalParameter {
     return Constants.PARAM_COMMAND_KEYCODE_SUMMARY;
   }
 
+  @Override
+  public boolean hasSubparam () {
+    return true;
+  }
+
   @Override
   public final String get (long code) {
     return asString(getValue(code));
diff --git a/Bindings/Java/parameters/ComputerBrailleCellSizeParameter.java b/Bindings/Java/parameters/ComputerBrailleCellSizeParameter.java
index 07c227e2f..36688fdb2 100644
--- a/Bindings/Java/parameters/ComputerBrailleCellSizeParameter.java
+++ b/Bindings/Java/parameters/ComputerBrailleCellSizeParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/ComputerBrailleRowCellsParameter.java b/Bindings/Java/parameters/ComputerBrailleRowCellsParameter.java
index c04c68073..671017251 100644
--- a/Bindings/Java/parameters/ComputerBrailleRowCellsParameter.java
+++ b/Bindings/Java/parameters/ComputerBrailleRowCellsParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
@@ -30,6 +30,11 @@ public class ComputerBrailleRowCellsParameter extends GlobalParameter {
     return Constants.PARAM_COMPUTER_BRAILLE_ROW_CELLS;
   }
 
+  @Override
+  public boolean hasSubparam () {
+    return true;
+  }
+
   @Override
   public final RowCells get (long row) {
     return asRowCells(getValue(row));
diff --git a/Bindings/Java/parameters/ComputerBrailleRowsMaskParameter.java b/Bindings/Java/parameters/ComputerBrailleRowsMaskParameter.java
index fcf9ad6e9..791372587 100644
--- a/Bindings/Java/parameters/ComputerBrailleRowsMaskParameter.java
+++ b/Bindings/Java/parameters/ComputerBrailleRowsMaskParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/ComputerBrailleTableParameter.java b/Bindings/Java/parameters/ComputerBrailleTableParameter.java
index fd3bd78b7..5f93ce70f 100644
--- a/Bindings/Java/parameters/ComputerBrailleTableParameter.java
+++ b/Bindings/Java/parameters/ComputerBrailleTableParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/CursorBlinkPercentageParameter.java b/Bindings/Java/parameters/CursorBlinkPercentageParameter.java
index 1524ba99b..553281b58 100644
--- a/Bindings/Java/parameters/CursorBlinkPercentageParameter.java
+++ b/Bindings/Java/parameters/CursorBlinkPercentageParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/CursorBlinkPeriodParameter.java b/Bindings/Java/parameters/CursorBlinkPeriodParameter.java
index bef702633..01e39f608 100644
--- a/Bindings/Java/parameters/CursorBlinkPeriodParameter.java
+++ b/Bindings/Java/parameters/CursorBlinkPeriodParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/CursorDotsParameter.java b/Bindings/Java/parameters/CursorDotsParameter.java
index 53da65e04..a9c7fb5fd 100644
--- a/Bindings/Java/parameters/CursorDotsParameter.java
+++ b/Bindings/Java/parameters/CursorDotsParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/DefinedDriverKeycodesParameter.java b/Bindings/Java/parameters/DefinedDriverKeycodesParameter.java
index 7de34e7db..899ad2406 100644
--- a/Bindings/Java/parameters/DefinedDriverKeycodesParameter.java
+++ b/Bindings/Java/parameters/DefinedDriverKeycodesParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/DeviceCellSizeParameter.java b/Bindings/Java/parameters/DeviceCellSizeParameter.java
index d767bbe39..7abae65c6 100644
--- a/Bindings/Java/parameters/DeviceCellSizeParameter.java
+++ b/Bindings/Java/parameters/DeviceCellSizeParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/DeviceIdentifierParameter.java b/Bindings/Java/parameters/DeviceIdentifierParameter.java
index a2dc1733a..774115fe0 100644
--- a/Bindings/Java/parameters/DeviceIdentifierParameter.java
+++ b/Bindings/Java/parameters/DeviceIdentifierParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/DeviceModelParameter.java b/Bindings/Java/parameters/DeviceModelParameter.java
index 94bfbd26d..409e5fa75 100644
--- a/Bindings/Java/parameters/DeviceModelParameter.java
+++ b/Bindings/Java/parameters/DeviceModelParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/DeviceOnlineParameter.java b/Bindings/Java/parameters/DeviceOnlineParameter.java
index fe5f540ff..5c690a77a 100644
--- a/Bindings/Java/parameters/DeviceOnlineParameter.java
+++ b/Bindings/Java/parameters/DeviceOnlineParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/DeviceSpeedParameter.java b/Bindings/Java/parameters/DeviceSpeedParameter.java
index c52d6fe72..ccb5f16da 100644
--- a/Bindings/Java/parameters/DeviceSpeedParameter.java
+++ b/Bindings/Java/parameters/DeviceSpeedParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/DisplaySizeParameter.java b/Bindings/Java/parameters/DisplaySizeParameter.java
index cbbb1251b..37843ebf3 100644
--- a/Bindings/Java/parameters/DisplaySizeParameter.java
+++ b/Bindings/Java/parameters/DisplaySizeParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/DriverCodeParameter.java b/Bindings/Java/parameters/DriverCodeParameter.java
index aca571114..e59bf6dd9 100644
--- a/Bindings/Java/parameters/DriverCodeParameter.java
+++ b/Bindings/Java/parameters/DriverCodeParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/DriverKeycodeNameParameter.java b/Bindings/Java/parameters/DriverKeycodeNameParameter.java
index d79c4f074..875eb5215 100644
--- a/Bindings/Java/parameters/DriverKeycodeNameParameter.java
+++ b/Bindings/Java/parameters/DriverKeycodeNameParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
@@ -30,6 +30,11 @@ public class DriverKeycodeNameParameter extends GlobalParameter {
     return Constants.PARAM_DRIVER_KEYCODE_NAME;
   }
 
+  @Override
+  public boolean hasSubparam () {
+    return true;
+  }
+
   @Override
   public final String get (long code) {
     return asString(getValue(code));
diff --git a/Bindings/Java/parameters/DriverKeycodeSummaryParameter.java b/Bindings/Java/parameters/DriverKeycodeSummaryParameter.java
index 8645854b7..4a851dc4f 100644
--- a/Bindings/Java/parameters/DriverKeycodeSummaryParameter.java
+++ b/Bindings/Java/parameters/DriverKeycodeSummaryParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
@@ -30,6 +30,11 @@ public class DriverKeycodeSummaryParameter extends GlobalParameter {
     return Constants.PARAM_DRIVER_KEYCODE_SUMMARY;
   }
 
+  @Override
+  public boolean hasSubparam () {
+    return true;
+  }
+
   @Override
   public final String get (long code) {
     return asString(getValue(code));
diff --git a/Bindings/Java/parameters/DriverNameParameter.java b/Bindings/Java/parameters/DriverNameParameter.java
index 981052c4d..c1104d1ad 100644
--- a/Bindings/Java/parameters/DriverNameParameter.java
+++ b/Bindings/Java/parameters/DriverNameParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/DriverPropertyValueParameter.java b/Bindings/Java/parameters/DriverPropertyValueParameter.java
index feb1608df..8bda4cc36 100644
--- a/Bindings/Java/parameters/DriverPropertyValueParameter.java
+++ b/Bindings/Java/parameters/DriverPropertyValueParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
@@ -30,6 +30,11 @@ public class DriverPropertyValueParameter extends GlobalParameter implements Par
     return Constants.PARAM_DRIVER_PROPERTY_VALUE;
   }
 
+  @Override
+  public boolean hasSubparam () {
+    return true;
+  }
+
   @Override
   public final Long get (long subparam) {
     return asLong(getValue(subparam));
diff --git a/Bindings/Java/parameters/DriverVersionParameter.java b/Bindings/Java/parameters/DriverVersionParameter.java
index 12f0d7118..d42ef4c35 100644
--- a/Bindings/Java/parameters/DriverVersionParameter.java
+++ b/Bindings/Java/parameters/DriverVersionParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/LiteraryBrailleParameter.java b/Bindings/Java/parameters/LiteraryBrailleParameter.java
index 36d715dc0..fdb6d32e4 100644
--- a/Bindings/Java/parameters/LiteraryBrailleParameter.java
+++ b/Bindings/Java/parameters/LiteraryBrailleParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/LiteraryBrailleTableParameter.java b/Bindings/Java/parameters/LiteraryBrailleTableParameter.java
index dda7bdfc6..1aa03f160 100644
--- a/Bindings/Java/parameters/LiteraryBrailleTableParameter.java
+++ b/Bindings/Java/parameters/LiteraryBrailleTableParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/MessageLocaleParameter.java b/Bindings/Java/parameters/MessageLocaleParameter.java
index 998917f97..529eabcda 100644
--- a/Bindings/Java/parameters/MessageLocaleParameter.java
+++ b/Bindings/Java/parameters/MessageLocaleParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/RenderedCellsParameter.java b/Bindings/Java/parameters/RenderedCellsParameter.java
index f9c3b1eee..ccd601b55 100644
--- a/Bindings/Java/parameters/RenderedCellsParameter.java
+++ b/Bindings/Java/parameters/RenderedCellsParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/RetainDotsParameter.java b/Bindings/Java/parameters/RetainDotsParameter.java
index 84c4d8d17..73ba95040 100644
--- a/Bindings/Java/parameters/RetainDotsParameter.java
+++ b/Bindings/Java/parameters/RetainDotsParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/ServerVersionParameter.java b/Bindings/Java/parameters/ServerVersionParameter.java
index 64e47d416..f4842490c 100644
--- a/Bindings/Java/parameters/ServerVersionParameter.java
+++ b/Bindings/Java/parameters/ServerVersionParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/parameters/SkipIdenticalLinesParameter.java b/Bindings/Java/parameters/SkipIdenticalLinesParameter.java
index 370814c95..31e639324 100644
--- a/Bindings/Java/parameters/SkipIdenticalLinesParameter.java
+++ b/Bindings/Java/parameters/SkipIdenticalLinesParameter.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Java/programs/VersionProgram.java b/Bindings/Java/programs/VersionProgram.java
index 16a25ca74..d288dfac6 100644
--- a/Bindings/Java/programs/VersionProgram.java
+++ b/Bindings/Java/programs/VersionProgram.java
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by
+ * Copyright (C) 2006-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Bindings/Lisp/Makefile.in b/Bindings/Lisp/Makefile.in
index 6161737f8..b1ec4397c 100644
--- a/Bindings/Lisp/Makefile.in
+++ b/Bindings/Lisp/Makefile.in
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Mario Lang <mlang@delysid.org>
+# Copyright (C) 2006-2025 by Mario Lang <mlang@delysid.org>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Lisp/apisetup.lisp b/Bindings/Lisp/apisetup.lisp
index 9d9adf250..e63387c79 100644
--- a/Bindings/Lisp/apisetup.lisp
+++ b/Bindings/Lisp/apisetup.lisp
@@ -1,7 +1,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ; libbrlapi - A library providing access to braille terminals for applications.
 ;
-; Copyright (C) 2006-2024 by Mario Lang <mlang@delysid.org>
+; Copyright (C) 2006-2025 by Mario Lang <mlang@delysid.org>
 ;
 ; libbrlapi comes with ABSOLUTELY NO WARRANTY.
 ;
diff --git a/Bindings/Lisp/apitest b/Bindings/Lisp/apitest
index 1396ca54b..91bc358f5 100755
--- a/Bindings/Lisp/apitest
+++ b/Bindings/Lisp/apitest
@@ -2,7 +2,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Lisp/apitest.lisp b/Bindings/Lisp/apitest.lisp
index 70102ff38..b7526abd6 100644
--- a/Bindings/Lisp/apitest.lisp
+++ b/Bindings/Lisp/apitest.lisp
@@ -1,7 +1,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ; libbrlapi - A library providing access to braille terminals for applications.
 ;
-; Copyright (C) 2006-2024 by Mario Lang <mlang@delysid.org>
+; Copyright (C) 2006-2025 by Mario Lang <mlang@delysid.org>
 ;
 ; libbrlapi comes with ABSOLUTELY NO WARRANTY.
 ;
diff --git a/Bindings/Lisp/bindings.m4 b/Bindings/Lisp/bindings.m4
index 1f2acc13b..da6daf901 100644
--- a/Bindings/Lisp/bindings.m4
+++ b/Bindings/Lisp/bindings.m4
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Lisp/brlapi.asd.in b/Bindings/Lisp/brlapi.asd.in
index 43b6b5ffe..0e28a246d 100644
--- a/Bindings/Lisp/brlapi.asd.in
+++ b/Bindings/Lisp/brlapi.asd.in
@@ -2,7 +2,7 @@
 
 ;;;; libbrlapi - A library providing access to braille terminals for applications.
 ;;;;
-;;;; Copyright (C) 2006-2024 by Mario Lang <mlang@blind.guru>
+;;;; Copyright (C) 2006-2025 by Mario Lang <mlang@blind.guru>
 ;;;;
 ;;;; libbrlapi comes with ABSOLUTELY NO WARRANTY.
 ;;;;
diff --git a/Bindings/Lisp/brlapi.lisp b/Bindings/Lisp/brlapi.lisp
index a928174c4..e6d87cd04 100644
--- a/Bindings/Lisp/brlapi.lisp
+++ b/Bindings/Lisp/brlapi.lisp
@@ -1,6 +1,6 @@
 ;;;; libbrlapi - A library providing access to braille terminals for applications.
 ;;;;
-;;;; Copyright (C) 2006-2024 by Mario Lang <mlang@delysid.org>
+;;;; Copyright (C) 2006-2025 by Mario Lang <mlang@delysid.org>
 ;;;;
 ;;;; libbrlapi comes with ABSOLUTELY NO WARRANTY.
 ;;;;
diff --git a/Bindings/Lisp/brlapi_config.lisp.in b/Bindings/Lisp/brlapi_config.lisp.in
index b40e0de2d..09fae4b3d 100644
--- a/Bindings/Lisp/brlapi_config.lisp.in
+++ b/Bindings/Lisp/brlapi_config.lisp.in
@@ -2,7 +2,7 @@
 
 ;;;; libbrlapi - A library providing access to braille terminals for applications.
 ;;;;
-;;;; Copyright (C) 2006-2024 by Mario Lang <mlang@delysid.org>
+;;;; Copyright (C) 2006-2025 by Mario Lang <mlang@delysid.org>
 ;;;;
 ;;;; libbrlapi comes with ABSOLUTELY NO WARRANTY.
 ;;;;
diff --git a/Bindings/Lisp/brlapi_prologue.lisp b/Bindings/Lisp/brlapi_prologue.lisp
index 12c5373ef..572e6baef 100644
--- a/Bindings/Lisp/brlapi_prologue.lisp
+++ b/Bindings/Lisp/brlapi_prologue.lisp
@@ -1,6 +1,6 @@
 ;;;; libbrlapi - A library providing access to braille terminals for applications.
 ;;;;
-;;;; Copyright (C) 2006-2024 by Mario Lang <mlang@delysid.org>
+;;;; Copyright (C) 2006-2025 by Mario Lang <mlang@delysid.org>
 ;;;;
 ;;;; libbrlapi comes with ABSOLUTELY NO WARRANTY.
 ;;;;
diff --git a/Bindings/Lua/Makefile.in b/Bindings/Lua/Makefile.in
index e16791691..fdd15256d 100644
--- a/Bindings/Lua/Makefile.in
+++ b/Bindings/Lua/Makefile.in
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Lua/apitest b/Bindings/Lua/apitest
index 85cf8cf8d..72e1742df 100755
--- a/Bindings/Lua/apitest
+++ b/Bindings/Lua/apitest
@@ -2,7 +2,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Lua/apitest.lua b/Bindings/Lua/apitest.lua
index aa3e8065e..6b791fd10 100644
--- a/Bindings/Lua/apitest.lua
+++ b/Bindings/Lua/apitest.lua
@@ -1,7 +1,7 @@
 --[[
   libbrlapi - A library providing access to braille terminals for applications.
  
-  Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+  Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
  
   libbrlapi comes with ABSOLUTELY NO WARRANTY.
  
diff --git a/Bindings/Lua/bindings.c b/Bindings/Lua/bindings.c
index e3552f6dd..a04e58c93 100644
--- a/Bindings/Lua/bindings.c
+++ b/Bindings/Lua/bindings.c
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+ * Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
  *
  * libbrlapi comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Bindings/Lua/bindings.m4 b/Bindings/Lua/bindings.m4
index acb9ff58d..21ebbc674 100644
--- a/Bindings/Lua/bindings.m4
+++ b/Bindings/Lua/bindings.m4
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Lua/constants.awk b/Bindings/Lua/constants.awk
index 77ab463e2..6388187b5 100644
--- a/Bindings/Lua/constants.awk
+++ b/Bindings/Lua/constants.awk
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by
+# Copyright (C) 2006-2025 by
 #   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 #   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
 #
diff --git a/Bindings/OCaml/Makefile.in b/Bindings/OCaml/Makefile.in
index 9aace5849..e90215d4b 100644
--- a/Bindings/OCaml/Makefile.in
+++ b/Bindings/OCaml/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -21,6 +21,7 @@ include $(SRC_TOP)bindings.mk
 OCAML_OK = @OCAML_OK@
 OCAMLC = @OCAMLC@
 OCAMLOPT = @OCAMLOPT@
+OCAMLFLAGS = -I +unix
 OCAMLMKLIB = @OCAMLMKLIB@
 OCAMLMKLIB_FLAGS = -dllib dll$(API_NAME)_stubs.so -cclib -l$(API_NAME)_stubs -cclib -l$(API_NAME)
 OCAMLMKLIBOPT_FLAGS = -cclib -l$(API_NAME)_stubs -cclib -l$(API_NAME)
@@ -64,13 +65,13 @@ $(OCAML_NCLIB): $(OCAML_CLIBS) brlapi.cmx
 	$(OCAMLMKLIB) -ldopt "$(LDFLAGS)" $(OCAMLMKLIBOPT_FLAGS) -o $(OCAML_LIB) brlapi.cmx
 
 brlapi.cmi: brlapi.mli
-	$(OCAMLC) -cc $(CC) -ccopt "$(LIBCFLAGS)" -o $@ -c brlapi.mli
+	$(OCAMLC) $(OCAMLFLAGS) -cc $(CC) -ccopt "$(LIBCFLAGS)" -o $@ -c brlapi.mli
 
 brlapi.cmo: brlapi.ml brlapi.cmi
-	$(OCAMLC) -cc $(CC) -ccopt "$(LIBCFLAGS)" -o $@ -c brlapi.ml
+	$(OCAMLC) $(OCAMLFLAGS) -cc $(CC) -ccopt "$(LIBCFLAGS)" -o $@ -c brlapi.ml
 
 brlapi.cmx: brlapi.ml brlapi.cmi
-	$(OCAMLOPT) -cc $(CC) -ccopt "$(LIBCFLAGS)" -o $@ -c brlapi.cmx brlapi.ml
+	$(OCAMLOPT) $(OCAMLFLAGS) -cc $(CC) -ccopt "$(LIBCFLAGS)" -o $@ -c brlapi.cmx brlapi.ml
 
 brlapi_stubs.$O: $(SRC_DIR)/brlapi_stubs.c
 	$(OCAMLC) -cc $(CC) -ccopt "$(LIBCFLAGS)" -I $(BLD_TOP)$(PGM_DIR) -I $(SRC_TOP)$(PGM_DIR) -c $(SRC_DIR)/brlapi_stubs.c
@@ -82,7 +83,7 @@ brlapi.ml: $(SRC_DIR)/main.ml constants.ml
 	cat $(SRC_DIR)/main.ml constants.ml > $@
 
 constants.mli: constants.ml
-	$(OCAMLC) -o /dev/null -c -i constants.ml > $@
+	$(OCAMLC) $(OCAMLFLAGS) -o /dev/null -c -i constants.ml > $@
 
 constants.ml: $(CONSTANTS_DEPENDENCIES)
 	$(AWK) $(CONSTANTS_ARGUMENTS) >$@
diff --git a/Bindings/OCaml/brlapi_stubs.c b/Bindings/OCaml/brlapi_stubs.c
index bae24842a..3d8b9de81 100644
--- a/Bindings/OCaml/brlapi_stubs.c
+++ b/Bindings/OCaml/brlapi_stubs.c
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2025 by
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  * All rights reserved.
diff --git a/Bindings/OCaml/constants.awk b/Bindings/OCaml/constants.awk
index 04f2567c6..23c734d25 100644
--- a/Bindings/OCaml/constants.awk
+++ b/Bindings/OCaml/constants.awk
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/OCaml/main.ml b/Bindings/OCaml/main.ml
index 7f12cd265..392f6e72c 100644
--- a/Bindings/OCaml/main.ml
+++ b/Bindings/OCaml/main.ml
@@ -1,7 +1,7 @@
 (*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2025 by
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  * All rights reserved.
diff --git a/Bindings/OCaml/main.mli b/Bindings/OCaml/main.mli
index 348a0daf3..831b8a668 100644
--- a/Bindings/OCaml/main.mli
+++ b/Bindings/OCaml/main.mli
@@ -1,7 +1,7 @@
 (*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2025 by
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  * All rights reserved.
diff --git a/Bindings/Python/Makefile.in b/Bindings/Python/Makefile.in
index c6d43f55d..fd65ad736 100644
--- a/Bindings/Python/Makefile.in
+++ b/Bindings/Python/Makefile.in
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2005-2024 by
+# Copyright (C) 2005-2025 by
 #   Alexis Robert <alexissoft@free.fr>
 #   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 #
diff --git a/Bindings/Python/apitest b/Bindings/Python/apitest
index e9980dbf2..69505e7ec 100755
--- a/Bindings/Python/apitest
+++ b/Bindings/Python/apitest
@@ -2,7 +2,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Python/apitest.py b/Bindings/Python/apitest.py
index 78e6ebd64..c2f862639 100755
--- a/Bindings/Python/apitest.py
+++ b/Bindings/Python/apitest.py
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Python/bindings.c b/Bindings/Python/bindings.c
index 208a2493b..4b019257f 100644
--- a/Bindings/Python/bindings.c
+++ b/Bindings/Python/bindings.c
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2025 by
  *   Alexis Robert <alexissoft@free.fr>
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *
diff --git a/Bindings/Python/bindings.h b/Bindings/Python/bindings.h
index ffd677704..15f66af89 100644
--- a/Bindings/Python/bindings.h
+++ b/Bindings/Python/bindings.h
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2005-2024 by
+ * Copyright (C) 2005-2025 by
  *   Alexis Robert <alexissoft@free.fr>
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *
diff --git a/Bindings/Python/bindings.m4 b/Bindings/Python/bindings.m4
index 040dedfc1..3b10a4adf 100644
--- a/Bindings/Python/bindings.m4
+++ b/Bindings/Python/bindings.m4
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2005-2024 by
+# Copyright (C) 2005-2025 by
 #   Alexis Robert <alexissoft@free.fr>
 #   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 #
diff --git a/Bindings/Python/brlapi.pyx b/Bindings/Python/brlapi.pyx
index dbc889073..38a035eb1 100644
--- a/Bindings/Python/brlapi.pyx
+++ b/Bindings/Python/brlapi.pyx
@@ -5,6 +5,8 @@ The reference C API documentation is available online http://brltty.app/doc/BrlA
 
 This documentation is only a python helper, you should also read C manual pages.
 
+A general introduction guide is available online https://brltty.app/doc/Manual-BrlAPI/English/BrlAPI.html
+
 Example : 
 import brlapi
 import errno
@@ -110,7 +112,7 @@ except brlapi.ConnectionError as e:
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2005-2024 by
+# Copyright (C) 2005-2025 by
 #   Alexis Robert <alexissoft@free.fr>
 #   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 #
@@ -540,7 +542,9 @@ cdef class Connection:
 
 		* tty : If tty >= 0, application takes control of the specified tty
 			If tty == TTY_DEFAULT, the library first tries to get the tty number from the WINDOWID environment variable (form xterm case), then the CONTROLVT variable, and at last reads /proc/self/stat (on linux)
-		* driver : Tells how the application wants readKey() to return key presses. None or "" means BrlTTY commands are required, whereas a driver name means that raw key codes returned by this driver are expected."""
+		* driver : Tells how the application wants readKey() to return key presses. None or "" means BrlTTY commands are required, whereas a driver name means that raw key codes returned by this driver are expected.
+
+		If the application does not want to take control of a particular tty, but keep control on all ttys, brlapi_enterTtyModeWithPath should be called instead with path equal to []. This is usually what a screen reader wants to use."""
 		cdef int retval
 		cdef int c_tty
 		cdef char *c_driver
diff --git a/Bindings/Python/c_brlapi.pxd b/Bindings/Python/c_brlapi.pxd
index 90a7dac97..e6720f76c 100644
--- a/Bindings/Python/c_brlapi.pxd
+++ b/Bindings/Python/c_brlapi.pxd
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2005-2024 by
+# Copyright (C) 2005-2025 by
 #   Alexis Robert <alexissoft@free.fr>
 #   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 #
diff --git a/Bindings/Python/constants.awk b/Bindings/Python/constants.awk
index 89f1347e2..1f7d2420b 100644
--- a/Bindings/Python/constants.awk
+++ b/Bindings/Python/constants.awk
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2005-2024 by
+# Copyright (C) 2005-2025 by
 #   Alexis Robert <alexissoft@free.fr>
 #   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 #
diff --git a/Bindings/Python/mkdoc.py b/Bindings/Python/mkdoc.py
index 36ea74e9e..aba31cd8c 100644
--- a/Bindings/Python/mkdoc.py
+++ b/Bindings/Python/mkdoc.py
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2005-2024 by
+# Copyright (C) 2005-2025 by
 #   Alexis Robert <alexissoft@free.fr>
 #   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 #
diff --git a/Bindings/Python/setup.py.in b/Bindings/Python/setup.py.in
index 1f604dc4a..9adee4fb7 100644
--- a/Bindings/Python/setup.py.in
+++ b/Bindings/Python/setup.py.in
@@ -2,7 +2,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2005-2024 by
+# Copyright (C) 2005-2025 by
 #   Alexis Robert <alexissoft@free.fr>
 #   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 #
diff --git a/Bindings/Tcl/Makefile.in b/Bindings/Tcl/Makefile.in
index 6e802f0c4..a260c9e66 100644
--- a/Bindings/Tcl/Makefile.in
+++ b/Bindings/Tcl/Makefile.in
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Tcl/apishell b/Bindings/Tcl/apishell
index 61f609b0a..d2342c3f2 100755
--- a/Bindings/Tcl/apishell
+++ b/Bindings/Tcl/apishell
@@ -2,7 +2,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Tcl/apitest b/Bindings/Tcl/apitest
index a44afa15c..006555fa6 100755
--- a/Bindings/Tcl/apitest
+++ b/Bindings/Tcl/apitest
@@ -2,7 +2,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Tcl/apitest.tcl b/Bindings/Tcl/apitest.tcl
index 2fef09a70..9ddc64d62 100755
--- a/Bindings/Tcl/apitest.tcl
+++ b/Bindings/Tcl/apitest.tcl
@@ -2,7 +2,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bindings/Tcl/bindings.c b/Bindings/Tcl/bindings.c
index 9be12ee69..3310fcf80 100644
--- a/Bindings/Tcl/bindings.c
+++ b/Bindings/Tcl/bindings.c
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+ * Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
  *
  * libbrlapi comes with ABSOLUTELY NO WARRANTY.
  *
@@ -19,12 +19,19 @@
 #include <unistd.h>
 #include <string.h>
 
+#include "brl_dots.h"
+
 #define BRLAPI_NO_DEPRECATED
 #define BRLAPI_NO_SINGLE_SESSION
 #include "brlapi.h"
 
 #include <tcl.h>
-#include "brl_dots.h"
+
+#ifndef TCL_SIZE_MAX
+typedef int Tcl_Size;
+#define TCL_SIZE_MAX ((int)(((unsigned int)-1)>>1))
+#define TCL_SIZE_MODIFIER ""
+#endif /* TCL_SIZE_MAX */
 
 #define allocateMemory(size) ((void *)ckalloc((size)))
 #define deallocateMemory(address) ckfree((void *)(address))
@@ -74,15 +81,11 @@ setStringResult (Tcl_Interp *interp, const char *string, int length) {
   Tcl_SetStringObj(Tcl_GetObjResult(interp), string, length);
 }
 
-static void
-setStringsResult (Tcl_Interp *interp, ...) {
-  Tcl_ResetResult(interp);
-
-  va_list arguments;
-  va_start(arguments, interp);
-  Tcl_AppendStringsToObjVA(Tcl_GetObjResult(interp), arguments);
-  va_end(arguments);
-}
+#define setStringsResult(interp, ...) \
+  do { \
+    Tcl_ResetResult(interp); \
+    Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), __VA_ARGS__); \
+  } while (0)
 
 static void
 setByteArrayResult (Tcl_Interp *interp, const unsigned char *bytes, int count) {
@@ -428,7 +431,7 @@ FUNCTION_HANDLER(session, enterTtyModeWithPath) {
   END_OPTIONS(2, 0, 0, "")
 
   Tcl_Obj **elements;
-  int count;
+  Tcl_Size count;
 
   if (options.path) {
     TEST_TCL_OK(Tcl_ListObjGetElements(interp, options.path, &count, &elements));
@@ -650,7 +653,7 @@ FUNCTION_HANDLER(session, parameter) {
 
       default: {
         Tcl_Obj **elements;
-        int count;
+        Tcl_Size count;
         TEST_TCL_OK(Tcl_ListObjGetElements(interp, value, &count, &elements));
 
         if (count) {
@@ -835,7 +838,7 @@ FUNCTION_HANDLER(session, readKey) {
   BrlapiSession *session = data;
   TEST_FUNCTION_ARGUMENTS(1, 0, "<wait>");
 
-  int length;
+  Tcl_Size length;
   const char *operand = Tcl_GetStringFromObj(objv[2], &length);
   if (!operand) return TCL_ERROR;
 
@@ -854,7 +857,7 @@ FUNCTION_HANDLER(session, readKeyWithTimeout) {
   BrlapiSession *session = data;
   TEST_FUNCTION_ARGUMENTS(1, 0, "{infinite | <seconds>}");
 
-  int length;
+  Tcl_Size length;
   const char *operand = Tcl_GetStringFromObj(objv[2], &length);
   if (!operand) return TCL_ERROR;
   int timeout;
@@ -908,7 +911,7 @@ FUNCTION_HANDLER(session, sendRaw) {
   BrlapiSession *session = data;
   TEST_FUNCTION_ARGUMENTS(1, 0, "<packet>");
 
-  int count;
+  Tcl_Size count;
   const unsigned char *bytes = Tcl_GetByteArrayFromObj(objv[2], &count);
 
   TEST_BRLAPI_OK(brlapi__sendRaw(session->handle, bytes, count));
@@ -943,8 +946,8 @@ typedef struct {
   Tcl_Obj *textObject;
   int textLength;
 
-  int andLength;
-  int orLength;
+  Tcl_Size andLength;
+  Tcl_Size orLength;
 
   unsigned numericCursor:1;
   unsigned numericDisplay:1;
@@ -1240,7 +1243,7 @@ FUNCTION_HANDLER(session, writeDots) {
   TEST_TCL_OK(getCellCount(interp, session, &size));
 
   unsigned char buffer[size];
-  int count;
+  Tcl_Size count;
   const unsigned char *cells = Tcl_GetByteArrayFromObj(objv[2], &count);
 
   if (count < size) {
@@ -1293,7 +1296,7 @@ changeKeys (
     }
 
     Tcl_Obj **codeElements;
-    int codeCount;
+    Tcl_Size codeCount;
     TEST_TCL_OK(Tcl_ListObjGetElements(interp, codeList, &codeCount, &codeElements));
 
     if (codeCount) {
@@ -1335,7 +1338,7 @@ changeKeyRanges (
   TEST_FUNCTION_ARGUMENTS(1, 0, "<keyRangeList>");
 
   Tcl_Obj **rangeElements;
-  int rangeCount;
+  Tcl_Size rangeCount;
   TEST_TCL_OK(Tcl_ListObjGetElements(interp, objv[2], &rangeCount, &rangeElements));
 
   if (rangeCount) {
@@ -1344,7 +1347,7 @@ changeKeyRanges (
     for (int rangeIndex=0; rangeIndex<rangeCount; rangeIndex+=1) {
       brlapi_range_t *range = &ranges[rangeIndex];
       Tcl_Obj **codeElements;
-      int codeCount;
+      Tcl_Size codeCount;
       TEST_TCL_OK(Tcl_ListObjGetElements(interp, rangeElements[rangeIndex], &codeCount, &codeElements));
 
       if (codeCount != 2) {
@@ -1532,7 +1535,7 @@ FUNCTION_HANDLER(general, makeDots) {
   TEST_FUNCTION_ARGUMENTS(1, 0, "<dotNumbersList>");
 
   Tcl_Obj **elements;
-  int elementCount;
+  Tcl_Size elementCount;
   TEST_TCL_OK(Tcl_ListObjGetElements(interp, objv[2], &elementCount, &elements));
 
   if (elementCount) {
@@ -1543,7 +1546,7 @@ FUNCTION_HANDLER(general, makeDots) {
       BrlDots *cell = &cells[elementIndex];
       *cell = 0;
 
-      int numberCount;
+      Tcl_Size numberCount;
       const char *numbers = Tcl_GetStringFromObj(element, &numberCount);
       if (!numbers) return TCL_ERROR;
 
diff --git a/Bindings/Tcl/bindings.m4 b/Bindings/Tcl/bindings.m4
index edb59a72e..5b8ad2aa1 100644
--- a/Bindings/Tcl/bindings.m4
+++ b/Bindings/Tcl/bindings.m4
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
@@ -51,8 +51,20 @@ fi
 
 ${TCL_OK} && {
    test -n "${TCL_PACKAGE_PATH}" && {
-      for directory in ${TCL_PACKAGE_PATH}
+      directories="${TCL_PACKAGE_PATH}"
+
+      test "${directories#*:}" = "${directories}" && {
+         # There's no colon so it's an old-style (before tcl-8.6.15) path.
+         # Replace each sequence of one or more spaces with a single colon.
+         directories="${directories// /:}"
+      }
+
+      while test "${#directories}" -gt 0
       do
+         directory="${directories%%:*}"
+         directories="${directories#*:}"
+         test "${#directory}" -eq 0 && continue
+
          test `expr "${directory}" : '.*/lib'` -eq 0 || {
             TCL_DIR="${directory}"
             break
diff --git a/Bindings/Tcl/constants.awk b/Bindings/Tcl/constants.awk
index 21bba3027..bba3bb5a9 100644
--- a/Bindings/Tcl/constants.awk
+++ b/Bindings/Tcl/constants.awk
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by
+# Copyright (C) 2006-2025 by
 #   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 #   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
 #
diff --git a/Bindings/Tcl/prologue.tcl b/Bindings/Tcl/prologue.tcl
index 548cea1af..7bb5e6dc5 100644
--- a/Bindings/Tcl/prologue.tcl
+++ b/Bindings/Tcl/prologue.tcl
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bootdisks/README.RedHat.fd b/Bootdisks/README.RedHat.fd
index 10a706688..8e11f1686 100644
--- a/Bootdisks/README.RedHat.fd
+++ b/Bootdisks/README.RedHat.fd
@@ -8,9 +8,9 @@ installation boot disk so that BRLTTY can be used during the installation
 process.
 
 History:
--Initial draft from Stphane Doyon <s.doyon@videotron.ca>
+-Initial draft from Stéphane Doyon <s.doyon@videotron.ca>
 -Additions from Nicolas Pitre <nico@fluxnic.net>
--April 7, 2002: Mostly rewritten by Stphane Doyon to take into account
+-April 7, 2002: Mostly rewritten by Stéphane Doyon to take into account
    the INIT_PATH hack
 -September 26, 2002: Amended by Dave Mielke <dave@mielke.cc> due to change from
    make file editing to autoconf in 3.1.
diff --git a/Bootdisks/bp2cf b/Bootdisks/bp2cf
index 57f6ffd0e..9ec72625f 100755
--- a/Bootdisks/bp2cf
+++ b/Bootdisks/bp2cf
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Bootdisks/rhmkiso b/Bootdisks/rhmkiso
index 52d25f8a8..26a42c78d 100755
--- a/Bootdisks/rhmkiso
+++ b/Bootdisks/rhmkiso
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Build/Logs/Windows-libusb-1.0.log b/Build/Logs/Windows-libusb-1.0.log
index 05d12fabc..7e625f267 100644
--- a/Build/Logs/Windows-libusb-1.0.log
+++ b/Build/Logs/Windows-libusb-1.0.log
@@ -27,20 +27,20 @@ c:\Program Files (x86)\Python311-32\include/cpython/pytime.h:190:12: warning: 's
   190 |     struct timeval *tv,
       |            ^~~~~~~
 brlapi.auto.c: In function '__Pyx_ImportType_3_0_4':
-brlapi.auto.c:33203:13: warning: unknown conversion type character 'z' in format [-Wformat=]
-33203 |             "%s.%s size changed, may indicate binary incompatibility. "
+brlapi.auto.c:33284:13: warning: unknown conversion type character 'z' in format [-Wformat=]
+33284 |             "%s.%s size changed, may indicate binary incompatibility. "
       |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-brlapi.auto.c:33204:24: note: format string is defined here
-33204 |             "Expected %zd from C header, got %zd from PyObject",
+brlapi.auto.c:33285:24: note: format string is defined here
+33285 |             "Expected %zd from C header, got %zd from PyObject",
       |                        ^
-brlapi.auto.c:33203:13: warning: unknown conversion type character 'z' in format [-Wformat=]
-33203 |             "%s.%s size changed, may indicate binary incompatibility. "
+brlapi.auto.c:33284:13: warning: unknown conversion type character 'z' in format [-Wformat=]
+33284 |             "%s.%s size changed, may indicate binary incompatibility. "
       |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-brlapi.auto.c:33204:47: note: format string is defined here
-33204 |             "Expected %zd from C header, got %zd from PyObject",
+brlapi.auto.c:33285:47: note: format string is defined here
+33285 |             "Expected %zd from C header, got %zd from PyObject",
       |                                               ^
-brlapi.auto.c:33203:13: warning: too many arguments for format [-Wformat-extra-args]
-33203 |             "%s.%s size changed, may indicate binary incompatibility. "
+brlapi.auto.c:33284:13: warning: too many arguments for format [-Wformat-extra-args]
+33284 |             "%s.%s size changed, may indicate binary incompatibility. "
       |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 mkwin: building documents
 linuxdoc is not installed - document will not be made
diff --git a/Build/Logs/Windows-libusb.log b/Build/Logs/Windows-libusb.log
index 8f07a5d84..29d2088f4 100644
--- a/Build/Logs/Windows-libusb.log
+++ b/Build/Logs/Windows-libusb.log
@@ -27,20 +27,20 @@ c:\Program Files (x86)\Python311-32\include/cpython/pytime.h:190:12: warning: 's
   190 |     struct timeval *tv,
       |            ^~~~~~~
 brlapi.auto.c: In function '__Pyx_ImportType_3_0_4':
-brlapi.auto.c:33203:13: warning: unknown conversion type character 'z' in format [-Wformat=]
-33203 |             "%s.%s size changed, may indicate binary incompatibility. "
+brlapi.auto.c:33284:13: warning: unknown conversion type character 'z' in format [-Wformat=]
+33284 |             "%s.%s size changed, may indicate binary incompatibility. "
       |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-brlapi.auto.c:33204:24: note: format string is defined here
-33204 |             "Expected %zd from C header, got %zd from PyObject",
+brlapi.auto.c:33285:24: note: format string is defined here
+33285 |             "Expected %zd from C header, got %zd from PyObject",
       |                        ^
-brlapi.auto.c:33203:13: warning: unknown conversion type character 'z' in format [-Wformat=]
-33203 |             "%s.%s size changed, may indicate binary incompatibility. "
+brlapi.auto.c:33284:13: warning: unknown conversion type character 'z' in format [-Wformat=]
+33284 |             "%s.%s size changed, may indicate binary incompatibility. "
       |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-brlapi.auto.c:33204:47: note: format string is defined here
-33204 |             "Expected %zd from C header, got %zd from PyObject",
+brlapi.auto.c:33285:47: note: format string is defined here
+33285 |             "Expected %zd from C header, got %zd from PyObject",
       |                                               ^
-brlapi.auto.c:33203:13: warning: too many arguments for format [-Wformat-extra-args]
-33203 |             "%s.%s size changed, may indicate binary incompatibility. "
+brlapi.auto.c:33284:13: warning: too many arguments for format [-Wformat-extra-args]
+33284 |             "%s.%s size changed, may indicate binary incompatibility. "
       |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 mkwin: building documents
 linuxdoc is not installed - document will not be made
diff --git a/Build/mk-android b/Build/mk-android
index bb624f6fd..d3dbac4a9 100755
--- a/Build/mk-android
+++ b/Build/mk-android
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Build/mk-dos b/Build/mk-dos
index a60cdb4b7..1075b013a 100755
--- a/Build/mk-dos
+++ b/Build/mk-dos
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Build/mk-prologue.sh b/Build/mk-prologue.sh
index 18b389303..2101b65de 100644
--- a/Build/mk-prologue.sh
+++ b/Build/mk-prologue.sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Build/mk-windows b/Build/mk-windows
index a8092a085..3dd5444f5 100755
--- a/Build/mk-windows
+++ b/Build/mk-windows
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/DOS/mkdosarc b/DOS/mkdosarc
index a2a727447..10fd92583 100755
--- a/DOS/mkdosarc
+++ b/DOS/mkdosarc
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/DOS/mkdostools b/DOS/mkdostools
index faab3de64..d9fe5b448 100755
--- a/DOS/mkdostools
+++ b/DOS/mkdostools
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Documents/ChangeLog b/Documents/ChangeLog
index adfa8c66b..813d5cdd5 100644
--- a/Documents/ChangeLog
+++ b/Documents/ChangeLog
@@ -1,6 +1,56 @@
 Note: this file is in reversed chronological order (bottom to top).
 
 
+October 15, 2024:
+ - BRLTTY 6.7 released:
+   General changes:
+      The -g [--gui-keyboard=] command line option has been added.
+      The -G (--gui-keyboard-table) command line option has been added.
+      The Speak Empty Line preference (default is yes) has been added.
+      The ASPK_EMP_LINE toggle command has been added.
+   BrailleMemo braille driver changes:
+      The KGS Next Touch models are now supported.
+   FreedomScientific braille driver changes:
+      Bluetooth service discovery is now used to find the serial channel.
+   HandyTech braille driver changes:
+      The Activator Pro models are now supported.
+      USB support for the Basic Braille Plus models has been enabled.
+   HIMS braille driver changes:
+      The eMotion is now supported.
+      USB detection of the BrailleSense 6 has been fixed.
+   Linux screen driver changes:
+      Keyboard input when in graphical mode is now supported.
+      Modifying a character with the Left Alt key is now supported.
+      The CapsLock key is now supported as a modifier (for Orca's laptop mode).
+      Shifted keys have been added to the XT key entry table.
+   AtSpi screen driver changes:
+      The Enter key is now mapped to the Return key rather than to Keypad Enter.
+   FileViewer screen driver changes:
+      The show=yes,no parameter has been added.
+      Typing any character now beeps as that's invalid on a read-only screen.
+      Home/End now go to the start/end of the current line.
+      Home/End with the Control modifier now go to the start/end of the file.
+   Speech FIFO changes:
+      A single write may now contain several packets.
+      Packet options for each of the autospeak echo settings have been added.
+      A packet option allowing a tune to be written has been added.
+   BrlAPI changes:
+      The version is now 0.8.6 (it was 0.8.5).
+      Setting a subparameter value has been fixed.
+      The BRLAPI_PARAM_DRIVER_PROPERTY_VALUE parameter has been added.
+      The WM_COMMAND window manager property is now monitored for changes.
+      The --write-window and --write-command options have been added to xbrlapi.
+   Key table changes:
+      The assignGlobal directive has been added.
+   Windows changes:
+      The winsetup script now supports the python-location symbolic link.
+   Android changes:
+      The release version is no longer allowed to upgrade itself.
+      Translations for the Ukrainian language have been added.
+   Language changes:
+      The German contraction table has been updated.
+      A message catalog for the Georgian language has been added.
+
 July 22, 2023:
  - BRLTTY 6.6 released:
    General changes:
diff --git a/Documents/Makefile.in b/Documents/Makefile.in
index 45f981f99..4f2c52e13 100644
--- a/Documents/Makefile.in
+++ b/Documents/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Documents/Manual-BRLTTY/English/BRLTTY.sgml b/Documents/Manual-BRLTTY/English/BRLTTY.sgml
index 2956ad513..e50fac659 100644
--- a/Documents/Manual-BRLTTY/English/BRLTTY.sgml
+++ b/Documents/Manual-BRLTTY/English/BRLTTY.sgml
@@ -20,9 +20,9 @@
     <name>Stphane Doyon <tt><htmlurl url="mailto:s.doyon@videotron.ca" name="&lt;s.doyon@videotron.ca&gt;"></tt>
   <and>
     <name>Dave Mielke <tt><htmlurl url="mailto:dave@mielke.cc" name="&lt;dave@mielke.cc&gt;"></tt>
-  <date>Version 6.6, July 2023
+  <date>Version 6.7, October 2024
   <abstract>
-    Copyright &copy; 1995-2024 by The BRLTTY Developers.
+    Copyright &copy; 1995-2025 by The BRLTTY Developers.
     BRLTTY is free software,
     and comes with ABSOLUTELY NO WARRANTY.
     It is placed under the terms of version 2 or later of
diff --git a/Documents/Manual-BRLTTY/English/Makefile.in b/Documents/Manual-BRLTTY/English/Makefile.in
index 3092be1bb..a6596e564 100644
--- a/Documents/Manual-BRLTTY/English/Makefile.in
+++ b/Documents/Manual-BRLTTY/English/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Documents/Manual-BRLTTY/English/text-tables.sgml b/Documents/Manual-BRLTTY/English/text-tables.sgml
index bc9e37518..7d7429f56 100644
--- a/Documents/Manual-BRLTTY/English/text-tables.sgml
+++ b/Documents/Manual-BRLTTY/English/text-tables.sgml
@@ -37,6 +37,7 @@ gd|Gaelic@
 gon|Gondi@
 gu|Gujarati@
 he|Hebrew@
+he&lowbar;IL|Hebrew (Israel)@
 hi|Hindi@
 hr|Croatian@
 hu|Hungarian@
diff --git a/Documents/Manual-BRLTTY/French/BRLTTY.sgml b/Documents/Manual-BRLTTY/French/BRLTTY.sgml
index 5ede39812..6c09a04aa 100644
--- a/Documents/Manual-BRLTTY/French/BRLTTY.sgml
+++ b/Documents/Manual-BRLTTY/French/BRLTTY.sgml
@@ -44,9 +44,9 @@
         <tt><htmlurl url="mailto:texou@accelibreinfo.eu" name="&lt;texou@accelibreinfo.eu&gt;"></tt>
       pour
         <tt><htmlurl url="http://www.traduc.org/" name="Traduc.org"></tt>
-  <date>Version 6.6, juillet 2023
+  <date>Version 6.7, octobre 2024
   <abstract>
-    Copyright &copy; 1995-2024 by Les Dveloppeurs de BRLTTY.
+    Copyright &copy; 1995-2025 by Les Dveloppeurs de BRLTTY.
     BRLTTY est un logiciel libre, et n'est fourni avec AUCUNE
     GARANTIE. Il est plac sous les termes de la version 2 ou
     ultrieure de la <bf>GNU General Public License</bf> publie par
diff --git a/Documents/Manual-BRLTTY/French/Makefile.in b/Documents/Manual-BRLTTY/French/Makefile.in
index 79fa838b0..5a2e0b9ba 100644
--- a/Documents/Manual-BRLTTY/French/Makefile.in
+++ b/Documents/Manual-BRLTTY/French/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Documents/Manual-BRLTTY/French/text-tables.sgml b/Documents/Manual-BRLTTY/French/text-tables.sgml
index d632cf8c3..4677a26e7 100644
--- a/Documents/Manual-BRLTTY/French/text-tables.sgml
+++ b/Documents/Manual-BRLTTY/French/text-tables.sgml
@@ -37,6 +37,7 @@ gd|Ga
 gon|Gondi@
 gu|Gujrati@
 he|Hbreux@
+he&lowbar;IL|Hbreux (Isral)@
 hi|Hindi@
 hr|Croate@
 hu|Hongrois@
diff --git a/Documents/Manual-BrlAPI/English/BrlAPI.sgml b/Documents/Manual-BrlAPI/English/BrlAPI.sgml
index 28af57282..1ef914ee1 100644
--- a/Documents/Manual-BrlAPI/English/BrlAPI.sgml
+++ b/Documents/Manual-BrlAPI/English/BrlAPI.sgml
@@ -313,9 +313,9 @@ or reading braille keys any more, it has to leave the tty, so
 that either <em/brltty/ can continue its job, or another client can
 take control of it.
 
-<sect3>Parameter handling
+<sect3>Parameter handling.
 
-The server exposes some parameters to the client. Some parameters are global to
+<p>The server exposes some parameters to the client. Some parameters are global to
 all clients (e.g. the braille display size), while others are local per client
 (e.g. retaindots, i.e. whether to send Perkins presses as dot patterns or as
 letters). Some parameters are read-only (e.g. the braille display size), while
diff --git a/Documents/Manual-BrlAPI/English/Makefile.in b/Documents/Manual-BrlAPI/English/Makefile.in
index 3cf377a24..4c1576e85 100644
--- a/Documents/Manual-BrlAPI/English/Makefile.in
+++ b/Documents/Manual-BrlAPI/English/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Documents/README.Linux b/Documents/README.Linux
index 3dd02f74e..2eb94acde 100644
--- a/Documents/README.Linux
+++ b/Documents/README.Linux
@@ -332,7 +332,7 @@ Privilege parameters control how BRLTTY establishes
 its `safer execution environment`_.
 From highest to lowest precedence, they can be specified via:
 
-* The ``--privilege-parameters`` (or ``-z``) command line option.
+* The ``--privilege-parameters`` (or ``-Z``) command line option.
 * The ``privilege-parameters`` |configuration directive|.
 * The ``BRLTTY_PRIVILEGE_PARAMETERS`` |environment variable|.
 * The ``--with-privilege-parameters`` |configure option|.
@@ -388,7 +388,7 @@ The following privilege parameters are supported for Linux:
 Staying Privileged
 ~~~~~~~~~~~~~~~~~~
 
-If the ``--stay-privileged`` (or ``-Z``) command line option is specified
+If the ``--stay-privileged`` (or ``-z``) command line option is specified
 then BRLTTY will retain all of the privileges
 that it had when it was invoked.
 It won't:
diff --git a/Documents/android-permissions.rst b/Documents/android-permissions.rst
index 24b5ea1b1..f53b36b1e 100644
--- a/Documents/android-permissions.rst
+++ b/Documents/android-permissions.rst
@@ -5,7 +5,7 @@
   * For Android to accept input via BRLTTY from your braille device's keyboard.
 
 ``FOREGROUND_SERVICE``
-  * For creating a foreground notification.
+  * To prevent Android from pausing, killing, etc BRLTTY if there's a resource shortage.
 
 ``WAKE_LOCK``
   * For resetting the Android device's lock timer
diff --git a/Documents/brltty.1.in b/Documents/brltty.1.in
index 5f525f50d..f9bdb4d12 100644
--- a/Documents/brltty.1.in
+++ b/Documents/brltty.1.in
@@ -3,7 +3,7 @@
 .\" BRLTTY - A background process providing access to the console screen (when in
 .\"          text mode) for a blind person using a refreshable braille display.
 .\"
-.\" Copyright (C) 1995-2024 by The BRLTTY Developers.
+.\" Copyright (C) 1995-2025 by The BRLTTY Developers.
 .\"
 .\" BRLTTY comes with ABSOLUTELY NO WARRANTY.
 .\"
@@ -16,7 +16,7 @@
 .\"
 .\" This software is maintained by Dave Mielke <dave@mielke.cc>.
 .\"
-.TH "BRLTTY" "1" "July 2023" "@PACKAGE_TARNAME@ @PACKAGE_VERSION@" "@PACKAGE_NAME@ User's Manual"
+.TH "BRLTTY" "1" "October 2024" "@PACKAGE_TARNAME@ @PACKAGE_VERSION@" "@PACKAGE_NAME@ User's Manual"
 .SH NAME
 brltty \- refreshable braille display driver for Linux/Unix
 .SH SYNOPSIS
diff --git a/Documents/brltty.conf.in b/Documents/brltty.conf.in
index f537d127a..ea4091860 100644
--- a/Documents/brltty.conf.in
+++ b/Documents/brltty.conf.in
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -167,6 +167,7 @@
 #text-table	gon	# Gondi
 #text-table	gu	# Gujarati
 #text-table	he	# Hebrew
+#text-table	he_IL	# Hebrew (Israel)
 #text-table	hi	# Hindi
 #text-table	hr	# Croatian
 #text-table	hu	# Hungarian
@@ -299,6 +300,9 @@
 
 # DotPad Braille Driver Parameters
 #brailledd-parameters dp:Display=default # [default,text,graphic]
+#brailledd-parameters dp:StatusCells=yes # [yes,no]
+#brailledd-parameters dp:HorizontalSpacing=1 # [0-10] (dots)
+#brailledd-parameters dp:VerticalSpacing=2 # [0-10] (dots)
 
 # EuroBraille Braille Driver Parameters
 #braille-parameters eu:Protocol= # [auto,azerbraille,clio,eurobraille,notebraille,pupibraille,scriba,esys,esytime,iris,esysiris]
@@ -428,10 +432,11 @@
 #speech-parameters mp:Pitch=0 # [-10-10]
 
 # SpeechDispatcher Speech Driver Parameters
+#speech-parameters sd:Address= # [address of speech-dispatcher's server]
+#speech-parameters sd:Autospawn= # [yes,no]
 #speech-parameters sd:Language= # [two-letter language code]
 #speech-parameters sd:Module= # [flite,festival,epos-generic,dtk-generic,...]
 #speech-parameters sd:Name= # 
-#speech-parameters sd:Port=6560 # [1-65535]
 #speech-parameters sd:Voice= # [male1,female1,male2,female2,male3,female3,child_male,child_female]
 
 # Swift Speech Driver Parameters
@@ -618,6 +623,12 @@
 # (can be overridden with the --drivers-directory= [-D] option)
 #drivers-directory @DRIVERS_DIRECTORY@
 
+# The helpers-directory directive specifies the absolute path to the
+# directory which contains the helper commands. If not
+# specified, @HELPERS_DIRECTORY@ will be used.
+# (can be overridden with the --helpers-directory= [-H] option)
+#helpers-directory @HELPERS_DIRECTORY@
+
 # The tables-directory directive specifies the absolute path to the directory
 # which contains the text, contraction, attributes, keyboard, and input tables.
 # If not specified, "@TABLES_DIRECTORY@" will be used.
@@ -742,6 +753,7 @@
 #screen-parameters lx:Charset=name+... # []
 #screen-parameters lx:FallbackText=text # ""
 #screen-parameters lx:HFB=auto # [auto,vga,fb,0-7]
+#screen-parameters lx:LargeScreenBug=no # [no,yes]
 #screen-parameters lx:LogSFM=no # [no,yes]
 #screen-parameters lx:RpiSpacesBug=no # [no,yes]
 #screen-parameters lx:Unicode=yes # [yes,no]
diff --git a/Documents/text-table.csv b/Documents/text-table.csv
index 8498ec234..07d436f3f 100644
--- a/Documents/text-table.csv
+++ b/Documents/text-table.csv
@@ -37,6 +37,7 @@
 "gon","Gondi"
 "gu","Gujarati"
 "he","Hebrew"
+"he_IL","Hebrew (Israel)"
 "hi","Hindi"
 "hr","Croatian"
 "hu","Hungarian"
diff --git a/Documents/xbrlapi.1.in b/Documents/xbrlapi.1.in
index 1a08e8055..42f0425fb 100644
--- a/Documents/xbrlapi.1.in
+++ b/Documents/xbrlapi.1.in
@@ -1,4 +1,4 @@
-.TH "XBRLAPI" "1" "July 2023" "@api_name@ @api_release@" "@api_name@ User's Manual"
+.TH "XBRLAPI" "1" "October 2024" "@api_name@ @api_release@" "@api_name@ User's Manual"
 .SH NAME
 xbrlapi \- X11 BrlAPI helper for Linux/Unix
 .SH SYNOPSIS
diff --git a/Drivers/Braille/Albatross/Makefile.in b/Drivers/Braille/Albatross/Makefile.in
index e7ee46eec..5ac4a4c44 100644
--- a/Drivers/Braille/Albatross/Makefile.in
+++ b/Drivers/Braille/Albatross/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Albatross/braille.c b/Drivers/Braille/Albatross/braille.c
index ebf94781c..864a01ac5 100644
--- a/Drivers/Braille/Albatross/braille.c
+++ b/Drivers/Braille/Albatross/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Albatross/brldefs-at.h b/Drivers/Braille/Albatross/brldefs-at.h
index 633e2c623..e9699ab6c 100644
--- a/Drivers/Braille/Albatross/brldefs-at.h
+++ b/Drivers/Braille/Albatross/brldefs-at.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Alva/Makefile.in b/Drivers/Braille/Alva/Makefile.in
index fdc17216b..a13426c76 100644
--- a/Drivers/Braille/Alva/Makefile.in
+++ b/Drivers/Braille/Alva/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Alva/braille.c b/Drivers/Braille/Alva/braille.c
index e4cb0af4b..01cae58eb 100644
--- a/Drivers/Braille/Alva/braille.c
+++ b/Drivers/Braille/Alva/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Alva/braille.h b/Drivers/Braille/Alva/braille.h
index cea1303c5..114b64dc2 100644
--- a/Drivers/Braille/Alva/braille.h
+++ b/Drivers/Braille/Alva/braille.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Alva/brldefs-al.h b/Drivers/Braille/Alva/brldefs-al.h
index 7fc998879..c5a7bd2da 100644
--- a/Drivers/Braille/Alva/brldefs-al.h
+++ b/Drivers/Braille/Alva/brldefs-al.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/B2G/Makefile.in b/Drivers/Braille/B2G/Makefile.in
index c3af4b68e..4740f8793 100644
--- a/Drivers/Braille/B2G/Makefile.in
+++ b/Drivers/Braille/B2G/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/B2G/braille.c b/Drivers/Braille/B2G/braille.c
index c91b9ea80..8898f7d2e 100644
--- a/Drivers/Braille/B2G/braille.c
+++ b/Drivers/Braille/B2G/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/B2G/brldefs-bg.h b/Drivers/Braille/B2G/brldefs-bg.h
index e55334b4f..0d9f68870 100644
--- a/Drivers/Braille/B2G/brldefs-bg.h
+++ b/Drivers/Braille/B2G/brldefs-bg.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Baum/Makefile.in b/Drivers/Braille/Baum/Makefile.in
index 5773e041c..9fd0b5caa 100644
--- a/Drivers/Braille/Baum/Makefile.in
+++ b/Drivers/Braille/Baum/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Baum/braille.c b/Drivers/Braille/Baum/braille.c
index be9c6e004..5e33bd5fe 100644
--- a/Drivers/Braille/Baum/braille.c
+++ b/Drivers/Braille/Baum/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Baum/brldefs-bm.h b/Drivers/Braille/Baum/brldefs-bm.h
index cbf7f8c4c..7a9308dfd 100644
--- a/Drivers/Braille/Baum/brldefs-bm.h
+++ b/Drivers/Braille/Baum/brldefs-bm.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/BrailComm/Makefile.in b/Drivers/Braille/BrailComm/Makefile.in
index 6ecf6d18d..5ac9bee70 100644
--- a/Drivers/Braille/BrailComm/Makefile.in
+++ b/Drivers/Braille/BrailComm/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/BrailComm/braille.c b/Drivers/Braille/BrailComm/braille.c
index 60fdb3e5a..61cbd7497 100644
--- a/Drivers/Braille/BrailComm/braille.c
+++ b/Drivers/Braille/BrailComm/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/BrailComm/brl-out.h b/Drivers/Braille/BrailComm/brl-out.h
index cc6446d5d..ef551cea3 100644
--- a/Drivers/Braille/BrailComm/brl-out.h
+++ b/Drivers/Braille/BrailComm/brl-out.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/BrailleLite/Makefile.in b/Drivers/Braille/BrailleLite/Makefile.in
index 3dec76607..fa81b86dd 100644
--- a/Drivers/Braille/BrailleLite/Makefile.in
+++ b/Drivers/Braille/BrailleLite/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/BrailleLite/README b/Drivers/Braille/BrailleLite/README
index 80c341bc8..73cc2900e 100644
--- a/Drivers/Braille/BrailleLite/README
+++ b/Drivers/Braille/BrailleLite/README
@@ -4,7 +4,7 @@ This is a beta driver for the Blazie Engineering Braille Lite.
 written by Nikhil Nair,
 with additions from Nicolas Pitre <nico@fluxnic.net>
 and Pete De Vasto,
-further modifications by Stphane Doyon <s.doyon@videotron.ca>,
+further modifications by Stéphane Doyon <s.doyon@videotron.ca>,
     starting August 2001.
 
 Both BrailleLite 18 and 40 should work, and there is now code that should
@@ -27,44 +27,44 @@ when the unit is in its internal notetaker mode.
 See help.src for a description of the key bindings.
 
 History:
-Stphane Doyon, April 2002, version 0.5.10:
+Stéphane Doyon, April 2002, version 0.5.10:
 -Act as if kbemu was off in any context other than CMDS_SCREEN (in
     particular typing a key won't throw you out of preferences menu
     anymore).
-Stphane Doyon, March 2002, version 0.5.9:
+Stéphane Doyon, March 2002, version 0.5.9:
 -Added "kbemu" driver parameter, so can start with kbemu already active.
-Stphane Doyon, February 2002, version 0.5.8:
+Stéphane Doyon, February 2002, version 0.5.8:
 -Added CMD_LEARN, CMD_NXPROMPT/CMD_PRPROMPT and CMD_SIXDOTS. Several
     VAL_PASSKEY effects were done through special cases: moved them
     back into cmdtrans. Identified special/reserved and free bindings.
     Cleaned out some #if 0s.
-Stphane Doyon, January 2002, version 0.5.7:
+Stéphane Doyon, January 2002, version 0.5.7:
 -Added bindings for CR_CUTAPPEND and CR_CUTLINE. Replaced CMD_CUT_BEG,
     CMD_CUT_END and CMD_CSRJMP by CR_ equivalents. Added CR_SETMARK and
     CR_GOTOMARK. These are a bit nasty: they reuse existing command dot
     patterns from within o-chord. Well practically all the patterns are
     taken!
-Stphane Doyon, January 2002, version 0.5.6:
+Stéphane Doyon, January 2002, version 0.5.6:
 -Fixed dot combinations with dots 7-8 on BL40 (for typing caps and ctrl).
-Stphane Doyon, December 2001, version 0.5.5:
+Stéphane Doyon, December 2001, version 0.5.5:
 -META is back. Now use VPC modifiers on VALPASSCHAR when TEXTTRANS
     not defined. Fixed uppercase that always locked active. Sub-commands
     of 35-chord no longer need to be chorded.
-Stphane Doyon, November 2001, version 0.5.4:
+Stéphane Doyon, November 2001, version 0.5.4:
 -Now using new generic VAL_PASS* mechanism for typing in keys, rather
     than having the driver itself insert stuff into the console. We
     no longer have the META function though, but we have ESCAPE.
-Stphane Doyon and Dave Mielke, September 2001, version 0.5.3:
+Stéphane Doyon and Dave Mielke, September 2001, version 0.5.3:
 -closebrl: don't clear display, use TCSADRAIN.
 -Slight API and name changes for BRLTTY 3.0. Commands can no longer be
     assumed to be chars, changed type of cmdtrans.
 -Fixed binding for switching virtual terminal with o-chord... it was wrong.
-Stphane Doyon, September 2001, version 0.5.2:
+Stéphane Doyon, September 2001, version 0.5.2:
 -Added baudrate parameter. Fixed up initialization, in particular a bug
     with use of qbase buffer unitialized.
-Stphane Doyon, September 2001, version 0.5.1:
+Stéphane Doyon, September 2001, version 0.5.1:
 -Added bindings for CMD_BACK and CR_MSGATTRIB.
-Stphane Doyon, August 2001
+Stéphane Doyon, August 2001
 -Added a version number, as many people have been playing with this
    driver. Arbitrarily started at 0.5.
 -Made the help more compact, and remove the duplication of the key
diff --git a/Drivers/Braille/BrailleLite/bindings.h b/Drivers/Braille/BrailleLite/bindings.h
index 7465a4f03..98fc5b8d6 100644
--- a/Drivers/Braille/BrailleLite/bindings.h
+++ b/Drivers/Braille/BrailleLite/bindings.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/BrailleLite/braille.c b/Drivers/Braille/BrailleLite/braille.c
index 522f5737d..622da395d 100644
--- a/Drivers/Braille/BrailleLite/braille.c
+++ b/Drivers/Braille/BrailleLite/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -21,7 +21,7 @@
  * Author: Nikhil Nair <nn201@cus.cam.ac.uk>
  * Copyright (C) 1998 by Nikhil Nair.
  * Some additions by: Nicolas Pitre <nico@fluxnic.net>
- * Some modifications copyright 2001 by Stphane Doyon <s.doyon@videotron.ca>.
+ * Some modifications copyright 2001 by Stéphane Doyon <s.doyon@videotron.ca>.
  * Some additions by: Dave Mielke <dave@mielke.cc>
  */
 
diff --git a/Drivers/Braille/BrailleLite/braille.h b/Drivers/Braille/BrailleLite/braille.h
index f08616319..6472f791e 100644
--- a/Drivers/Braille/BrailleLite/braille.h
+++ b/Drivers/Braille/BrailleLite/braille.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/BrailleMemo/Makefile.in b/Drivers/Braille/BrailleMemo/Makefile.in
index ce5aa9664..6eca6d6cf 100644
--- a/Drivers/Braille/BrailleMemo/Makefile.in
+++ b/Drivers/Braille/BrailleMemo/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/BrailleMemo/braille.c b/Drivers/Braille/BrailleMemo/braille.c
index 3da10d5fa..1eee10c6d 100644
--- a/Drivers/Braille/BrailleMemo/braille.c
+++ b/Drivers/Braille/BrailleMemo/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/BrailleMemo/brldefs-mm.h b/Drivers/Braille/BrailleMemo/brldefs-mm.h
index 33f207ccc..97881eb63 100644
--- a/Drivers/Braille/BrailleMemo/brldefs-mm.h
+++ b/Drivers/Braille/BrailleMemo/brldefs-mm.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/BrailleNote/Makefile.in b/Drivers/Braille/BrailleNote/Makefile.in
index 0a2a4b9df..cfcd42b8d 100644
--- a/Drivers/Braille/BrailleNote/Makefile.in
+++ b/Drivers/Braille/BrailleNote/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/BrailleNote/braille.c b/Drivers/Braille/BrailleNote/braille.c
index 8d0595fad..c79139d2e 100644
--- a/Drivers/Braille/BrailleNote/braille.c
+++ b/Drivers/Braille/BrailleNote/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/BrailleNote/brldefs-bn.h b/Drivers/Braille/BrailleNote/brldefs-bn.h
index b6597a6bd..58832a7b2 100644
--- a/Drivers/Braille/BrailleNote/brldefs-bn.h
+++ b/Drivers/Braille/BrailleNote/brldefs-bn.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Braudi/Makefile.in b/Drivers/Braille/Braudi/Makefile.in
index ef4f44732..058ffd9ac 100644
--- a/Drivers/Braille/Braudi/Makefile.in
+++ b/Drivers/Braille/Braudi/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Braudi/braille.c b/Drivers/Braille/Braudi/braille.c
index 54847e8cf..0edb18259 100644
--- a/Drivers/Braille/Braudi/braille.c
+++ b/Drivers/Braille/Braudi/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/BrlAPI/Makefile.in b/Drivers/Braille/BrlAPI/Makefile.in
index a765ca821..1de44ccf2 100644
--- a/Drivers/Braille/BrlAPI/Makefile.in
+++ b/Drivers/Braille/BrlAPI/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/BrlAPI/braille.c b/Drivers/Braille/BrlAPI/braille.c
index ddea0a69e..c38a8785c 100644
--- a/Drivers/Braille/BrlAPI/braille.c
+++ b/Drivers/Braille/BrlAPI/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -127,11 +127,16 @@ static void brl_destruct(BrailleDisplay *brl)
 
 static int
 setClientPriority (BrailleDisplay *brl) {
-  unsigned char worst = ARRAY_COUNT(qualityPriorities) - 1;
-  unsigned char quality = MIN(brl->quality, worst);
+  unsigned char best = ARRAY_COUNT(qualityPriorities) - 1;
+  unsigned char quality = MIN(brl->quality, best);
   brlapi_param_clientPriority_t priority = qualityPriorities[quality];
 
   if (priority != currentPriority) {
+    logMessage(LOG_CATEGORY(BRAILLE_DRIVER),
+      "changing client priority: %u",
+      priority
+    );
+
     int result = brlapi_setParameter(
       BRLAPI_PARAM_CLIENT_PRIORITY, 0,
       BRLAPI_PARAMF_LOCAL, &priority, sizeof(priority)
diff --git a/Drivers/Braille/Canute/Makefile.in b/Drivers/Braille/Canute/Makefile.in
index 51696c2c0..dbe9c5bb9 100644
--- a/Drivers/Braille/Canute/Makefile.in
+++ b/Drivers/Braille/Canute/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Canute/braille.c b/Drivers/Braille/Canute/braille.c
index 7b79b8a6b..c35e7676c 100644
--- a/Drivers/Braille/Canute/braille.c
+++ b/Drivers/Braille/Canute/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Canute/brldefs-cn.h b/Drivers/Braille/Canute/brldefs-cn.h
index 972d591ad..9ea7a444d 100644
--- a/Drivers/Braille/Canute/brldefs-cn.h
+++ b/Drivers/Braille/Canute/brldefs-cn.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Cebra/Makefile.in b/Drivers/Braille/Cebra/Makefile.in
index 4d5343734..b29b27518 100644
--- a/Drivers/Braille/Cebra/Makefile.in
+++ b/Drivers/Braille/Cebra/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Cebra/braille.c b/Drivers/Braille/Cebra/braille.c
index 9f8be2e3d..ffc3bd9d0 100644
--- a/Drivers/Braille/Cebra/braille.c
+++ b/Drivers/Braille/Cebra/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Cebra/brldefs-ce.h b/Drivers/Braille/Cebra/brldefs-ce.h
index d36399d48..c4fd36635 100644
--- a/Drivers/Braille/Cebra/brldefs-ce.h
+++ b/Drivers/Braille/Cebra/brldefs-ce.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/CombiBraille/Makefile.in b/Drivers/Braille/CombiBraille/Makefile.in
index 2d2bbbbda..a07010995 100644
--- a/Drivers/Braille/CombiBraille/Makefile.in
+++ b/Drivers/Braille/CombiBraille/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/CombiBraille/braille.c b/Drivers/Braille/CombiBraille/braille.c
index 20bff8c38..a92349298 100644
--- a/Drivers/Braille/CombiBraille/braille.c
+++ b/Drivers/Braille/CombiBraille/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/CombiBraille/braille.h b/Drivers/Braille/CombiBraille/braille.h
index f567ff3bf..0684c2a28 100644
--- a/Drivers/Braille/CombiBraille/braille.h
+++ b/Drivers/Braille/CombiBraille/braille.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/CombiBraille/brldefs-cb.h b/Drivers/Braille/CombiBraille/brldefs-cb.h
index b19c8bd2e..a1f848e68 100644
--- a/Drivers/Braille/CombiBraille/brldefs-cb.h
+++ b/Drivers/Braille/CombiBraille/brldefs-cb.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/DotPad/Makefile.in b/Drivers/Braille/DotPad/Makefile.in
index e5e53f641..f4b37ff4e 100644
--- a/Drivers/Braille/DotPad/Makefile.in
+++ b/Drivers/Braille/DotPad/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/DotPad/README b/Drivers/Braille/DotPad/README
new file mode 100644
index 000000000..9e07fbcae
--- /dev/null
+++ b/Drivers/Braille/DotPad/README
@@ -0,0 +1,139 @@
+The DotPad Braille Driver
+=========================
+
+.. contents::
+
+Driver Properties
+-----------------
+
+There are a number of properties which control how the driver renders text.
+Each of these:
+
+* has a built-in default.
+* can have its built-in default overridden via a driver parameter.
+* can be changed and queried at run-time via BrlAPI.
+
+.. topic:: Specifying a Driver Parameter
+
+  The general format of a driver parameter specification is::
+
+    [driver:]name=value
+
+  The name, as well as the value (if it's a word), can be abbreviated.
+  The optional *driver* component is the two-letter code
+  of the driver whose parameter is being specified.
+  It's a good idea to include it in order to avoid
+  any ambiguity with the names of the parameters of other drivers.
+  The DotPad's driver code is ``dp``.
+
+  In decreasing order of precedence, the parameter can be specified via:
+
+  * The ``--braille-parameters=`` (``-B``) command line option.
+  * The ``BRLTTY_BRAILLE_PARAMETERS`` environment variable (if enabled).
+  * The ``braille-parameters`` configuration directive.
+
+.. topic:: Changing a Driver Property
+
+  A driver property is changed by setting the ``DRIVER_PROPERTY_VALUE`` BrlAPI parameter.
+  This is done by calling the ``brlapi_setParameter()`` function
+  with its ``subparam`` argument set to the driver property.
+  The DotPad's driver properties are defined within the ``brldefs-dp.h`` header.
+
+  To set the display to the graphic area, for example, you'd do::
+
+    brlapi_param_t parameter = BRLAPI_PARAM_DRIVER_PROPERTY_VALUE;
+    brlapi_param_subparam_t subparam = DP_SELECT_DISPLAY;
+    brlapi_param_flags_t flags = 0;
+    brlapi_param_driverPropertyValue_t newSetting = DP_DISPLAY_GRAPHIC;
+    int result = brlapi_setParameter(
+      parameter, subparam, flags,
+      &newSetting, sizeof(newSetting)
+    );
+
+.. topic:: Querying a Driver Property
+
+  Querying a driver property is similar to changing it (see above), except that:
+
+  * You call the ``brlapi_getParameter()`` function.
+  * The property's current value is returned within the data area.
+
+  To query the display property, for example, you'd do::
+
+    brlapi_param_t parameter = BRLAPI_PARAM_DRIVER_PROPERTY_VALUE;
+    brlapi_param_subparam_t subparam = DP_SELECT_DISPLAY;
+    brlapi_param_flags_t flags = 0;
+    brlapi_param_driverPropertyValue_t currentSetting;
+    ssize_t length = brlapi_getParameter(
+      parameter, subparam, flags,
+      &currentSetting, sizeof(currentSetting)
+    );
+
+Display Selection
+~~~~~~~~~~~~~~~~~
+
+Select whether text is written to the text area or to the graphic area.
+If text is written to the graphic area then a multi-line display is emulated.
+
+The driver parameter is ``display=``.
+It can be set to one of the following:
+
+``default``
+  Use the graphic area if the device has one,
+  else use the text area.
+
+``text``
+  Explicitly use the text area.
+  It's an error if the device doesn't have one.
+
+``graphic``
+  Explicitly use the graphic area.
+  It's an error if the device doesn't have one.
+
+The driver property is ``DP_SELECT_DISPLAY``.
+It can be set to one of the following:
+
+``DP_DISPLAY_TEXT``
+  Switch to the text area.
+  It's an error if the device doesn't have one.
+
+``DP_DISPLAY_GRAPHIC``
+  Switch to the graphic area.
+  It's an error if the device doesn't have one.
+
+Status Cells
+~~~~~~~~~~~~
+
+When emulating a multi-line display within the graphic area,
+specify whether or not status information is to be written to the actual text area.
+The default is to write it.
+
+The driver parameter is ``statusCells=``.
+It may be specified as either ``yes`` (the default) or as ``no``.
+
+The driver property is ``DP_STATUS_CELLS``.
+It may be set to either 0 for ``no`` or to 1 for ``yes``.
+
+Horizontal Spacing
+~~~~~~~~~~~~~~~~~~
+
+When emulating a multi-line display within the graphic area,
+specify how many columns of dots separate the characters from one another.
+It must be an integer within the range 0-10 (inclusive).
+The default is 1.
+
+The driver parameter is ``horizontalSpacing=``.
+
+The driver property is ``DP_HORIZONTAL_SPACING``.
+
+Vertical Spacing
+~~~~~~~~~~~~~~~~
+
+When emulating a multi-line display within the graphic area,
+specify how many rows of dots separate the lines from one another.
+It must be an integer within the range 0-10 (inclusive).
+The default is 2.
+
+The driver parameter is ``verticalSpacing=``.
+
+The driver property is ``DP_VERTICAL_SPACING``.
+
diff --git a/Drivers/Braille/DotPad/braille.c b/Drivers/Braille/DotPad/braille.c
index 392548d02..8f57fb23f 100644
--- a/Drivers/Braille/DotPad/braille.c
+++ b/Drivers/Braille/DotPad/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -31,18 +31,18 @@
 
 typedef enum {
   PARM_DISPLAY,
+  PARM_STATUS_CELLS,
+  PARM_HORIZONTAL_SPACING,
+  PARM_VERTICAL_SPACING,
 } DP_DriverParameter;
 
-#define BRLPARMS "display"
+#define BRLPARMS "display", "statuscells", "horizontalspacing", "verticalspacing"
 #include "brl_driver.h"
 #include "brldefs-dp.h"
 
 #define PROBE_RETRY_LIMIT 2
 #define PROBE_INPUT_TIMEOUT 1000
 
-#define GRAPHIC_HORIZONTAL_SPACING 1
-#define GRAPHIC_VERTICAL_SPACING 2
-
 #define KEY_ENTRY(s,t,k,n) {.value = {.group=DP_GRP_##s, .number=DP_##t##_##k}, .name=n}
 #define SCROLL_KEY_ENTRY(k,n) KEY_ENTRY(ScrollKeys, SCL, k, n)
 #define KEYBOARD_KEY_ENTRY(k,n) KEY_ENTRY(PerkinsKeys, KBD, k, n)
@@ -142,6 +142,13 @@ struct BrailleDataStruct {
   unsigned char deviceName[10];
   const KeyNameEntry *keyNameTable[7];
 
+  struct {
+    unsigned char selectedDisplay;
+    unsigned char statusCells;
+    unsigned char horizontalSpacing;
+    unsigned char verticalSpacing;
+  } properties;
+
   struct {
     unsigned char scroll[4];
     unsigned char perkins[4];
@@ -174,9 +181,135 @@ struct BrailleDataStruct {
     InternalRowEntry *internalRows;
 
     unsigned char *statusCells;
-  } arrays;;
+  } arrays;
 };
 
+static ExternalRowEntry *
+getExternalRow (BrailleDisplay *brl, unsigned int index) {
+  return &brl->data->arrays.externalRows[index];
+}
+
+static void
+initializeExternalRows (BrailleDisplay *brl) {
+  unsigned char *cells = brl->data->arrays.externalCells;
+  unsigned char destination = brl->data->display.destination;
+
+  for (unsigned int index=0; index<brl->data->display.externalRows; index+=1) {
+    ExternalRowEntry *row = getExternalRow(brl, index);
+
+    row->cells = cells;
+    cells += brl->data->display.externalColumns;
+
+    row->destination = destination;
+    destination += 1;
+  }
+}
+
+static InternalRowEntry *
+getInternalRow (BrailleDisplay *brl, unsigned int index) {
+  return &brl->data->arrays.internalRows[index];
+}
+
+static void
+initializeInternalRows (BrailleDisplay *brl) {
+  unsigned char *cells = brl->data->arrays.internalCells + brl->data->display.verticalSpacing;
+
+  const unsigned char cellHeight = brl->data->display.cellHeight;
+  const unsigned char rowHeight = cellHeight + brl->data->display.verticalSpacing;
+  const unsigned char cellMask = (1 << cellHeight) - 1;
+
+  for (unsigned int index=0; index<brl->data->display.internalRows; index+=1) {
+    InternalRowEntry *row = getInternalRow(brl, index);
+
+    row->cells = cells;
+    cells += brl->data->display.internalColumns;
+
+    {
+      unsigned char offset = rowHeight * index;
+      row->upperRow = getExternalRow(brl, (offset / cellHeight));
+      row->upperShift = offset % cellHeight;
+      row->upperMask = (cellMask << row->upperShift) & cellMask;
+      row->upperMask |= row->upperMask << 4;
+
+      offset += 3;
+      row->lowerRow = getExternalRow(brl, (offset / cellHeight));
+      row->lowerShift = cellHeight - (offset % cellHeight) - 1;
+      row->lowerMask = cellMask >> row->lowerShift;
+      row->lowerMask |= row->lowerMask << 4;
+    }
+
+    row->hasChanged = 1;
+  }
+}
+
+static int
+makeArrays (BrailleDisplay *brl) {
+  if ((brl->data->arrays.externalCells = calloc(brl->data->display.externalRows, brl->data->display.externalColumns))) {
+    if ((brl->data->arrays.internalCells = calloc(brl->data->display.internalRows, brl->data->display.internalColumns))) {
+      if ((brl->data->arrays.externalRows = malloc(ARRAY_SIZE(brl->data->arrays.externalRows, brl->data->display.externalRows)))) {
+        if ((brl->data->arrays.internalRows = malloc(ARRAY_SIZE(brl->data->arrays.internalRows, brl->data->display.internalRows)))) {
+          int statusCellsAllocated = !brl->statusColumns;
+
+          if (!statusCellsAllocated) {
+            if ((brl->data->arrays.statusCells = calloc(brl->statusColumns, 1))) {
+              statusCellsAllocated = 1;
+            }
+          }
+
+          if (statusCellsAllocated) {
+            initializeExternalRows(brl);
+            initializeInternalRows(brl);
+            return 1;
+          }
+
+          free(brl->data->arrays.internalRows);
+          brl->data->arrays.internalRows = NULL;
+        }
+
+        free(brl->data->arrays.externalRows);
+        brl->data->arrays.externalRows = NULL;
+      }
+
+      free(brl->data->arrays.internalCells);
+      brl->data->arrays.internalCells = NULL;
+    }
+
+    free(brl->data->arrays.externalCells);
+    brl->data->arrays.externalCells = NULL;
+  }
+
+  logMallocError();
+  return 0;
+}
+
+static void
+deallocateArrays (BrailleDisplay *brl) {
+  if (brl->data->arrays.statusCells) {
+    free(brl->data->arrays.statusCells);
+    brl->data->arrays.statusCells = NULL;
+  }
+
+  if (brl->data->arrays.internalRows) {
+    free(brl->data->arrays.internalRows);
+    brl->data->arrays.internalRows = NULL;
+  }
+
+  if (brl->data->arrays.internalCells) {
+    free(brl->data->arrays.internalCells);
+    brl->data->arrays.internalCells = NULL;
+  }
+
+  if (brl->data->arrays.externalRows) {
+    free(brl->data->arrays.externalRows);
+    brl->data->arrays.externalRows = NULL;
+  }
+
+  if (brl->data->arrays.externalCells) {
+    free(brl->data->arrays.externalCells);
+    brl->data->arrays.externalCells = NULL;
+  }
+}
+
 static void
 setExternalDisplayProperties (BrailleDisplay *brl, const DP_DisplayDescriptor *display) {
   {
@@ -261,8 +394,8 @@ useGraphicDisplay (BrailleDisplay *brl) {
     brl->data->display.destination = 1;
   }
 
-  brl->data->display.horizontalSpacing = GRAPHIC_HORIZONTAL_SPACING;
-  brl->data->display.verticalSpacing = GRAPHIC_VERTICAL_SPACING;
+  brl->data->display.horizontalSpacing = brl->data->properties.horizontalSpacing;
+  brl->data->display.verticalSpacing = brl->data->properties.verticalSpacing;
 
   setExternalDisplayProperties(brl, &brl->data->boardInformation.graphic);
   setInternalDisplayProperties(brl);
@@ -274,24 +407,37 @@ useGraphicDisplay (BrailleDisplay *brl) {
 }
 
 static int
-selectDisplay (BrailleDisplay *brl, const char *parameter) {
+configureDisplay (BrailleDisplay *brl) {
+  typedef void (*UseDisplayMethod) (BrailleDisplay *brl);
+
+  static const UseDisplayMethod useDisplayMethods[] = {
+    [DP_DISPLAY_TEXT]    = useTextDisplay,
+    [DP_DISPLAY_GRAPHIC] = useGraphicDisplay,
+  };
+
+  useDisplayMethods[brl->data->properties.selectedDisplay](brl);
+  return makeArrays(brl);
+}
+
+static int
+parseDisplayParameter (BrailleDisplay *brl, const char *parameter) {
   typedef struct {
     const char *name; // must be first
-    void (*useDisplay) (BrailleDisplay *brl);
     unsigned char featureBit;
+    unsigned char displayValue;
   } ChoiceEntry;
 
   static const ChoiceEntry choiceTable[] = {
     { .name = "default" },
 
     { .name = "text",
-      .useDisplay = useTextDisplay,
       .featureBit = DP_HAS_TEXT_DISPLAY,
+      .displayValue = DP_DISPLAY_TEXT,
     },
 
     { .name = "graphic",
-      .useDisplay = useGraphicDisplay,
       .featureBit = DP_HAS_GRAPHIC_DISPLAY,
+      .displayValue = DP_DISPLAY_GRAPHIC,
     },
 
     { .name = NULL }
@@ -304,7 +450,7 @@ selectDisplay (BrailleDisplay *brl, const char *parameter) {
     const ChoiceEntry *choice = &choiceTable[choiceIndex];
 
     if (features & choice->featureBit) {
-      choice->useDisplay(brl);
+      brl->data->properties.selectedDisplay = choice->displayValue;
       return 1;
     }
 
@@ -316,9 +462,9 @@ selectDisplay (BrailleDisplay *brl, const char *parameter) {
   }
 
   if (features & DP_HAS_GRAPHIC_DISPLAY) {
-    useGraphicDisplay(brl);
+    brl->data->properties.selectedDisplay = DP_DISPLAY_GRAPHIC;
   } else if (features & DP_HAS_TEXT_DISPLAY) {
-    useTextDisplay(brl);
+    brl->data->properties.selectedDisplay = DP_DISPLAY_TEXT;
   } else {
     logMessage(LOG_WARNING, "no supported display");
     return 0;
@@ -328,114 +474,176 @@ selectDisplay (BrailleDisplay *brl, const char *parameter) {
 }
 
 static int
-processParameters (BrailleDisplay *brl, char **parameters) {
-  if (!selectDisplay(brl, parameters[PARM_DISPLAY])) return 0;
-  return 1;
-}
+parseDriverParameters (BrailleDisplay *brl, char **parameters) {
+  if (!parseDisplayParameter(brl, parameters[PARM_DISPLAY])) return 0;
 
-static ExternalRowEntry *
-getExternalRow (BrailleDisplay *brl, unsigned int index) {
-  return &brl->data->arrays.externalRows[index];
-}
+  {
+    unsigned int value = DP_DEFAULT_STATUS_CELLS;
+    const char *parameter = parameters[PARM_STATUS_CELLS];
 
-static void
-initializeExternalRows (BrailleDisplay *brl) {
-  unsigned char *cells = brl->data->arrays.externalCells;
-  unsigned char destination = brl->data->display.destination;
+    if (parameter && *parameter) {
+      if (!validateYesNo(&value, parameter)) {
+        logMessage(LOG_WARNING, "invalid status cells setting: %s", parameter);
+      }
+    }
 
-  for (unsigned int index=0; index<brl->data->display.externalRows; index+=1) {
-    ExternalRowEntry *row = getExternalRow(brl, index);
+    brl->data->properties.statusCells = value;
+  }
 
-    row->cells = cells;
-    cells += brl->data->display.externalColumns;
+  {
+    int value = DP_DEFAULT_HORIZONTAL_SPACING;
+    const char *parameter = parameters[PARM_HORIZONTAL_SPACING];
 
-    row->destination = destination;
-    destination += 1;
+    if (parameter && *parameter) {
+      static const int minimum = 0;
+      static const int maximum = DP_MAXIMUM_HORIZONTAL_SPACING;
+
+      if (!validateInteger(&value, parameter, &minimum, &maximum)) {
+        logMessage(LOG_WARNING, "invalid horizontal spacing setting: %s", parameter);
+      }
+    }
+
+    brl->data->properties.horizontalSpacing = value;
   }
-}
 
-static InternalRowEntry *
-getInternalRow (BrailleDisplay *brl, unsigned int index) {
-  return &brl->data->arrays.internalRows[index];
+  {
+    int value = DP_DEFAULT_VERTICAL_SPACING;
+    const char *parameter = parameters[PARM_VERTICAL_SPACING];
+
+    if (parameter && *parameter) {
+      static const int minimum = 0;
+      static const int maximum = DP_MAXIMUM_VERTICAL_SPACING;
+
+      if (!validateInteger(&value, parameter, &minimum, &maximum)) {
+        logMessage(LOG_WARNING, "invalid vertical spacing setting: %s", parameter);
+      }
+    }
+
+    brl->data->properties.verticalSpacing = value;
+  }
+
+  return 1;
 }
 
-static void
-initializeInternalRows (BrailleDisplay *brl) {
-  unsigned char *cells = brl->data->arrays.internalCells + brl->data->display.verticalSpacing;
+static int
+reconfigureDisplay (BrailleDisplay *brl) {
+  deallocateArrays(brl);
+  int reconfigured = configureDisplay(brl);
 
-  const unsigned char cellHeight = brl->data->display.cellHeight;
-  const unsigned char rowHeight = cellHeight + brl->data->display.verticalSpacing;
-  const unsigned char cellMask = (1 << cellHeight) - 1;
+  if (reconfigured) {
+    brl->resizeRequired = 1;
+  } else {
+    brl->hasFailed = 1;
+  }
 
-  for (unsigned int index=0; index<brl->data->display.internalRows; index+=1) {
-    InternalRowEntry *row = getInternalRow(brl, index);
+  return reconfigured;
+}
 
-    row->cells = cells;
-    cells += brl->data->display.internalColumns;
+static int
+usingGraphicDisplay (BrailleDisplay *brl) {
+  return brl->data->properties.selectedDisplay != DP_DISPLAY_TEXT;
+}
 
-    {
-      unsigned char offset = rowHeight * index;
-      row->upperRow = getExternalRow(brl, (offset / cellHeight));
-      row->upperShift = offset % cellHeight;
-      row->upperMask = (cellMask << row->upperShift) & cellMask;
-      row->upperMask |= row->upperMask << 4;
+static int
+verifyDisplayProperty (BrailleDisplay *brl, uint64_t value) {
+  unsigned char features = brl->data->boardInformation.features;
 
-      offset += 3;
-      row->lowerRow = getExternalRow(brl, (offset / cellHeight));
-      row->lowerShift = cellHeight - (offset % cellHeight) - 1;
-      row->lowerMask = cellMask >> row->lowerShift;
-      row->lowerMask |= row->lowerMask << 4;
-    }
+  switch (value) {
+    case DP_DISPLAY_TEXT:
+      if (features & DP_HAS_TEXT_DISPLAY) return 1;
+      logMessage(LOG_WARNING, "no text display");
+      break;
 
-    row->hasChanged = 1;
+    case DP_DISPLAY_GRAPHIC:
+      if (features & DP_HAS_GRAPHIC_DISPLAY) return 1;
+      logMessage(LOG_WARNING, "no graphic display");
+      break;
+
+    default:
+      logMessage(LOG_WARNING, "unrecognized display value: %"PRIu64, value);
+      break;
   }
+
+  return 0;
 }
 
 static int
-makeArrays (BrailleDisplay *brl) {
-  if ((brl->data->arrays.externalCells = calloc(brl->data->display.externalRows, brl->data->display.externalColumns))) {
-    if ((brl->data->arrays.internalCells = calloc(brl->data->display.internalRows, brl->data->display.internalColumns))) {
-      if ((brl->data->arrays.externalRows = malloc(ARRAY_SIZE(brl->data->arrays.externalRows, brl->data->display.externalRows)))) {
-        if ((brl->data->arrays.internalRows = malloc(ARRAY_SIZE(brl->data->arrays.internalRows, brl->data->display.internalRows)))) {
-          int statusCellsAllocated = !brl->statusColumns;
+setDriverProperty (BrailleDisplay *brl, uint64_t property, uint64_t value) {
+  switch (property) {
+    case DP_PROP_SELECTED_DISPLAY: {
+      if (!verifyDisplayProperty(brl, value)) break;
+
+      if (value != brl->data->properties.selectedDisplay) {
+        brl->data->properties.selectedDisplay = value;
+        reconfigureDisplay(brl);
+      }
 
-          if (!statusCellsAllocated) {
-            if ((brl->data->arrays.statusCells = calloc(brl->statusColumns, 1))) {
-              statusCellsAllocated = 1;
-            }
-          }
+      return 1;
+    }
 
-          if (statusCellsAllocated) {
-            initializeExternalRows(brl);
-            initializeInternalRows(brl);
-            return 1;
-          }
+    case DP_PROP_STATUS_CELLS: {
+      if (value > 1) break;
 
-          free(brl->data->arrays.internalRows);
-        }
+      if (value != brl->data->properties.statusCells) {
+        brl->data->properties.statusCells = value;
+      }
 
-        free(brl->data->arrays.externalRows);
+      return 1;
+    }
+
+    case DP_PROP_HORIZONTAL_SPACING: {
+      if (value > DP_MAXIMUM_HORIZONTAL_SPACING) break;
+
+      if (value != brl->data->properties.horizontalSpacing) {
+        brl->data->properties.horizontalSpacing = value;
+        if (usingGraphicDisplay(brl)) reconfigureDisplay(brl);
       }
 
-      free(brl->data->arrays.internalCells);
+      return 1;
     }
 
-    free(brl->data->arrays.externalCells);
+    case DP_PROP_VERTICAL_SPACING: {
+      if (value > DP_MAXIMUM_VERTICAL_SPACING) break;
+
+      if (value != brl->data->properties.verticalSpacing) {
+        brl->data->properties.verticalSpacing = value;
+        if (usingGraphicDisplay(brl)) reconfigureDisplay(brl);
+      }
+
+      return 1;
+    }
+
+    default:
+      logMessage(LOG_WARNING, "cannot set unrecognized driver property: %"PRIu64, property);
+      return 0;
   }
 
-  logMallocError();
+  logMessage(LOG_WARNING, "cannot set unsupported driver property value: %"PRIu64"=%"PRIu64, property, value);
   return 0;
 }
 
-static void
-deallocateArrays (BrailleDisplay *brl) {
-  free(brl->data->arrays.statusCells);
+static int
+getDriverProperty (BrailleDisplay *brl, uint64_t property, uint64_t *value) {
+  switch (property) {
+    case DP_PROP_SELECTED_DISPLAY:
+      *value = brl->data->properties.selectedDisplay;
+      return 1;
 
-  free(brl->data->arrays.internalRows);
-  free(brl->data->arrays.internalCells);
+    case DP_PROP_STATUS_CELLS:
+      *value = brl->data->properties.statusCells;
+      return 1;
 
-  free(brl->data->arrays.externalRows);
-  free(brl->data->arrays.externalCells);
+    case DP_PROP_HORIZONTAL_SPACING:
+      *value = brl->data->properties.horizontalSpacing;
+      return 1;
+
+    case DP_PROP_VERTICAL_SPACING:
+      *value = brl->data->properties.verticalSpacing;
+      return 1;
+  }
+
+  logMessage(LOG_WARNING, "cannot get unrecognized driver property: %"PRIu64, property);
+  return 0;
 }
 
 static uint16_t
@@ -652,8 +860,15 @@ refreshCells (BrailleDisplay *brl) {
     row += 1;
   }
 
-  if (!brl->statusColumns) return 1;
-  return writeStatusCells(brl);
+  if (brl->data->properties.statusCells) {
+    if (brl->statusColumns) {
+      if (!writeStatusCells(brl)) {
+        return 0;
+      }
+    }
+  }
+
+  return 1;
 }
 
 static unsigned int
@@ -770,7 +985,7 @@ brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) {
 }
 
 static int
-getDataSize (const DP_Packet *packet) {
+getPacketDataSize (const DP_Packet *packet) {
   return getUint16(packet->fields.length)
        - 1 // checksum
        - (packet->fields.data - &packet->fields.destination) // header
@@ -817,11 +1032,11 @@ reportDisplayError (unsigned char code) {
 }
 
 static void
-saveField (
+saveTextField (
   const DP_Packet *packet, const char *label,
   unsigned char *field, int fieldSize
 ) {
-  int dataSize = getDataSize(packet);
+  int dataSize = getPacketDataSize(packet);
 
   if (dataSize > fieldSize) dataSize = fieldSize;
   memcpy(field, packet->fields.data, dataSize);
@@ -853,7 +1068,7 @@ updateKeyGroup (
   BrailleDisplay *brl, const DP_Packet *packet, KeyGroup keyGroup,
   unsigned char *array, size_t arraySize
 ) {
-  int dataSize = getDataSize(packet);
+  int dataSize = getPacketDataSize(packet);
 
   if (dataSize > 0) {
     unsigned char data[arraySize];
@@ -883,7 +1098,7 @@ brl_readCommand (BrailleDisplay *brl, KeyTableCommandContext context) {
   while ((size = readPacket(brl, packet.bytes, sizeof(packet)))) {
     switch (getUint16(packet.fields.command)) {
       case DP_RSP_FIRMWARE_VERSION: {
-        saveField(
+        saveTextField(
           &packet, "Firmware Version",
           brl->data->firmwareVersion,
           sizeof(brl->data->firmwareVersion)
@@ -894,7 +1109,7 @@ brl_readCommand (BrailleDisplay *brl, KeyTableCommandContext context) {
       }
 
       case DP_RSP_DEVICE_NAME: {
-        saveField(
+        saveTextField(
           &packet, "Device Name",
           brl->data->deviceName,
           sizeof(brl->data->deviceName)
@@ -915,9 +1130,10 @@ brl_readCommand (BrailleDisplay *brl, KeyTableCommandContext context) {
         continue;
       }
 
-      case DP_NTF_DISPLAY_LINE:
+      case DP_NTF_DISPLAY_LINE: {
         acknowledgeBrailleMessage(brl);
         continue;
+      }
 
       case DP_NTF_KEYS_SCROLL: {
         updateKeyGroup(
@@ -1135,8 +1351,8 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) {
       );
 
       if (probed) {
-        if (processParameters(brl, parameters)) {
-          if (makeArrays(brl)) {
+        if (parseDriverParameters(brl, parameters)) {
+          if (configureDisplay(brl)) {
             brl->acknowledgements.missing.timeout = (brl->data->display.refreshTime * 100) + 1000;
 
             if (writeRequest(brl, DP_REQ_FIRMWARE_VERSION, 0, NULL, 0)) {
@@ -1149,6 +1365,9 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) {
                 );
 
                 brl->refreshBrailleDisplay = refreshCells;
+                brl->getDriverProperty = getDriverProperty;
+                brl->setDriverProperty = setDriverProperty;
+
                 return 1;
               }
             }
diff --git a/Drivers/Braille/DotPad/brldefs-dp.h b/Drivers/Braille/DotPad/brldefs-dp.h
index 68af255fa..ba3b883f8 100644
--- a/Drivers/Braille/DotPad/brldefs-dp.h
+++ b/Drivers/Braille/DotPad/brldefs-dp.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -169,4 +169,22 @@ typedef union {
   DP_PacketFields fields;
 } DP_Packet;
 
+typedef enum {
+  DP_PROP_SELECTED_DISPLAY,
+  DP_PROP_STATUS_CELLS,
+  DP_PROP_HORIZONTAL_SPACING,
+  DP_PROP_VERTICAL_SPACING,
+} DP_DriverProperty;
+
+#define DP_DISPLAY_TEXT    0
+#define DP_DISPLAY_GRAPHIC 1
+
+#define DP_DEFAULT_STATUS_CELLS 1 // 0=no, 1=yes
+
+#define DP_DEFAULT_HORIZONTAL_SPACING  1
+#define DP_MAXIMUM_HORIZONTAL_SPACING 10
+
+#define DP_DEFAULT_VERTICAL_SPACING  2
+#define DP_MAXIMUM_VERTICAL_SPACING 10
+
 #endif /* BRLTTY_INCLUDED_DP_BRLDEFS */ 
diff --git a/Drivers/Braille/EcoBraille/Makefile.in b/Drivers/Braille/EcoBraille/Makefile.in
index 267e14137..ff87929ea 100644
--- a/Drivers/Braille/EcoBraille/Makefile.in
+++ b/Drivers/Braille/EcoBraille/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/EcoBraille/braille.c b/Drivers/Braille/EcoBraille/braille.c
index 2b910259d..b3f2dd4b1 100644
--- a/Drivers/Braille/EcoBraille/braille.c
+++ b/Drivers/Braille/EcoBraille/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/EcoBraille/braille.h b/Drivers/Braille/EcoBraille/braille.h
index 311eff56e..aa2904dac 100644
--- a/Drivers/Braille/EcoBraille/braille.h
+++ b/Drivers/Braille/EcoBraille/braille.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/EuroBraille/Makefile.in b/Drivers/Braille/EuroBraille/Makefile.in
index 343e7b99a..d64961a25 100644
--- a/Drivers/Braille/EuroBraille/Makefile.in
+++ b/Drivers/Braille/EuroBraille/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/EuroBraille/brldefs-eu.h b/Drivers/Braille/EuroBraille/brldefs-eu.h
index 9edc1096d..94352464d 100644
--- a/Drivers/Braille/EuroBraille/brldefs-eu.h
+++ b/Drivers/Braille/EuroBraille/brldefs-eu.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/EuroBraille/eu_braille.c b/Drivers/Braille/EuroBraille/eu_braille.c
index cc7b82aae..c2317122f 100644
--- a/Drivers/Braille/EuroBraille/eu_braille.c
+++ b/Drivers/Braille/EuroBraille/eu_braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/EuroBraille/eu_clio.c b/Drivers/Braille/EuroBraille/eu_clio.c
index 0f3e80cc0..2e088a322 100644
--- a/Drivers/Braille/EuroBraille/eu_clio.c
+++ b/Drivers/Braille/EuroBraille/eu_clio.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/EuroBraille/eu_esysiris.c b/Drivers/Braille/EuroBraille/eu_esysiris.c
index 290d0e711..b365072e8 100644
--- a/Drivers/Braille/EuroBraille/eu_esysiris.c
+++ b/Drivers/Braille/EuroBraille/eu_esysiris.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/EuroBraille/eu_protocol.h b/Drivers/Braille/EuroBraille/eu_protocol.h
index 635bd22d3..ac517de4e 100644
--- a/Drivers/Braille/EuroBraille/eu_protocol.h
+++ b/Drivers/Braille/EuroBraille/eu_protocol.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/FrankAudiodata/Makefile.in b/Drivers/Braille/FrankAudiodata/Makefile.in
index 0fb60b7a4..37d246701 100644
--- a/Drivers/Braille/FrankAudiodata/Makefile.in
+++ b/Drivers/Braille/FrankAudiodata/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/FrankAudiodata/braille.c b/Drivers/Braille/FrankAudiodata/braille.c
index 2d0c43d9c..ea72349fd 100644
--- a/Drivers/Braille/FrankAudiodata/braille.c
+++ b/Drivers/Braille/FrankAudiodata/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/FrankAudiodata/brldefs-fa.h b/Drivers/Braille/FrankAudiodata/brldefs-fa.h
index 5b47970fe..30eb80ec1 100644
--- a/Drivers/Braille/FrankAudiodata/brldefs-fa.h
+++ b/Drivers/Braille/FrankAudiodata/brldefs-fa.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/FreedomScientific/Makefile.in b/Drivers/Braille/FreedomScientific/Makefile.in
index cfa15c48b..2aa1e3294 100644
--- a/Drivers/Braille/FreedomScientific/Makefile.in
+++ b/Drivers/Braille/FreedomScientific/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/FreedomScientific/braille.c b/Drivers/Braille/FreedomScientific/braille.c
index 18d96cdfb..d4e9b34f5 100644
--- a/Drivers/Braille/FreedomScientific/braille.c
+++ b/Drivers/Braille/FreedomScientific/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/FreedomScientific/brldefs-fs.h b/Drivers/Braille/FreedomScientific/brldefs-fs.h
index a04ab15c0..b5bced5ff 100644
--- a/Drivers/Braille/FreedomScientific/brldefs-fs.h
+++ b/Drivers/Braille/FreedomScientific/brldefs-fs.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/HIMS/Makefile.in b/Drivers/Braille/HIMS/Makefile.in
index fc8e1585e..ef54496df 100644
--- a/Drivers/Braille/HIMS/Makefile.in
+++ b/Drivers/Braille/HIMS/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/HIMS/braille.c b/Drivers/Braille/HIMS/braille.c
index 52375ae7e..0eabdee6f 100644
--- a/Drivers/Braille/HIMS/braille.c
+++ b/Drivers/Braille/HIMS/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/HIMS/brldefs-hm.h b/Drivers/Braille/HIMS/brldefs-hm.h
index 3f59a63ec..11cdaf33a 100644
--- a/Drivers/Braille/HIMS/brldefs-hm.h
+++ b/Drivers/Braille/HIMS/brldefs-hm.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/HandyTech/Makefile.in b/Drivers/Braille/HandyTech/Makefile.in
index 85431f7db..51e91ae30 100644
--- a/Drivers/Braille/HandyTech/Makefile.in
+++ b/Drivers/Braille/HandyTech/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/HandyTech/braille.c b/Drivers/Braille/HandyTech/braille.c
index 0f672f2b7..301a8a8a9 100644
--- a/Drivers/Braille/HandyTech/braille.c
+++ b/Drivers/Braille/HandyTech/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -270,6 +270,13 @@ BEGIN_KEY_NAME_TABLES(ac4)
   KEY_NAME_TABLE(joystick),
 END_KEY_NAME_TABLES
 
+BEGIN_KEY_NAME_TABLES(acp)
+  KEY_NAME_TABLE(routing),
+  KEY_NAME_TABLE(dots),
+  KEY_NAME_TABLE(navigation),
+  KEY_NAME_TABLE(brailleStar),
+END_KEY_NAME_TABLES
+
 typedef enum {
   HT_BWK_Backward = 0X01,
   HT_BWK_Forward = 0X08,
@@ -307,6 +314,7 @@ DEFINE_KEY_TABLE(bb)
 DEFINE_KEY_TABLE(bbp)
 DEFINE_KEY_TABLE(alo)
 DEFINE_KEY_TABLE(ac4)
+DEFINE_KEY_TABLE(acp)
 DEFINE_KEY_TABLE(bkwm)
 
 BEGIN_KEY_TABLE_LIST
@@ -327,6 +335,7 @@ BEGIN_KEY_TABLE_LIST
   &KEY_TABLE_DEFINITION(bbp),
   &KEY_TABLE_DEFINITION(alo),
   &KEY_TABLE_DEFINITION(ac4),
+  &KEY_TABLE_DEFINITION(acp),
   &KEY_TABLE_DEFINITION(bkwm),
 END_KEY_TABLE_LIST
 
@@ -556,7 +565,7 @@ static const ModelEntry modelTable[] = {
     .name = "Activator Pro 64",
     .textCells = 64,
     .statusCells = 0,
-    .keyTableDefinition = &KEY_TABLE_DEFINITION(ac4),
+    .keyTableDefinition = &KEY_TABLE_DEFINITION(acp),
     .interpretByte = interpretByte_key,
     .writeCells = writeCells_Evolution,
     .setBrailleFirmness = setBrailleFirmness,
@@ -570,7 +579,7 @@ static const ModelEntry modelTable[] = {
     .name = "Activator Pro 80",
     .textCells = 80,
     .statusCells = 0,
-    .keyTableDefinition = &KEY_TABLE_DEFINITION(ac4),
+    .keyTableDefinition = &KEY_TABLE_DEFINITION(acp),
     .interpretByte = interpretByte_key,
     .writeCells = writeCells_Evolution,
     .setBrailleFirmness = setBrailleFirmness,
diff --git a/Drivers/Braille/HandyTech/brldefs-ht.h b/Drivers/Braille/HandyTech/brldefs-ht.h
index d409ed952..7d4902725 100644
--- a/Drivers/Braille/HandyTech/brldefs-ht.h
+++ b/Drivers/Braille/HandyTech/brldefs-ht.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Hedo/Makefile.in b/Drivers/Braille/Hedo/Makefile.in
index 7544cf8a9..c7b4965ea 100644
--- a/Drivers/Braille/Hedo/Makefile.in
+++ b/Drivers/Braille/Hedo/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Hedo/braille.c b/Drivers/Braille/Hedo/braille.c
index 0021d2c09..e94640845 100644
--- a/Drivers/Braille/Hedo/braille.c
+++ b/Drivers/Braille/Hedo/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Hedo/brldefs-hd.h b/Drivers/Braille/Hedo/brldefs-hd.h
index af9ab0965..c7b9fd6f0 100644
--- a/Drivers/Braille/Hedo/brldefs-hd.h
+++ b/Drivers/Braille/Hedo/brldefs-hd.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/HumanWare/Makefile.in b/Drivers/Braille/HumanWare/Makefile.in
index 786a0315d..c51afb4e6 100644
--- a/Drivers/Braille/HumanWare/Makefile.in
+++ b/Drivers/Braille/HumanWare/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/HumanWare/braille.c b/Drivers/Braille/HumanWare/braille.c
index a2c1d9f35..74d283332 100644
--- a/Drivers/Braille/HumanWare/braille.c
+++ b/Drivers/Braille/HumanWare/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/HumanWare/brldefs-hw.h b/Drivers/Braille/HumanWare/brldefs-hw.h
index 39803a762..01b13d4ed 100644
--- a/Drivers/Braille/HumanWare/brldefs-hw.h
+++ b/Drivers/Braille/HumanWare/brldefs-hw.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Inceptor/Makefile.in b/Drivers/Braille/Inceptor/Makefile.in
index 2a32778e0..691f55ef1 100644
--- a/Drivers/Braille/Inceptor/Makefile.in
+++ b/Drivers/Braille/Inceptor/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Inceptor/braille.c b/Drivers/Braille/Inceptor/braille.c
index 2f7101d77..05ecae3d3 100644
--- a/Drivers/Braille/Inceptor/braille.c
+++ b/Drivers/Braille/Inceptor/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Inceptor/brldefs-ic.h b/Drivers/Braille/Inceptor/brldefs-ic.h
index 0db5cc03f..f15e8b8da 100644
--- a/Drivers/Braille/Inceptor/brldefs-ic.h
+++ b/Drivers/Braille/Inceptor/brldefs-ic.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Iris/Makefile.in b/Drivers/Braille/Iris/Makefile.in
index 82722c535..cfbac6682 100644
--- a/Drivers/Braille/Iris/Makefile.in
+++ b/Drivers/Braille/Iris/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Iris/braille.c b/Drivers/Braille/Iris/braille.c
index b594a3ed7..08af40db0 100644
--- a/Drivers/Braille/Iris/braille.c
+++ b/Drivers/Braille/Iris/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Iris/brldefs-ir.h b/Drivers/Braille/Iris/brldefs-ir.h
index 2d18cb187..727db5223 100644
--- a/Drivers/Braille/Iris/brldefs-ir.h
+++ b/Drivers/Braille/Iris/brldefs-ir.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Libbraille/Makefile.in b/Drivers/Braille/Libbraille/Makefile.in
index f9770db78..12ce670cb 100644
--- a/Drivers/Braille/Libbraille/Makefile.in
+++ b/Drivers/Braille/Libbraille/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -20,7 +20,7 @@ DRIVER_CODE = lb
 DRIVER_NAME = Libbraille
 DRIVER_USAGE = Libbraille
 DRIVER_VERSION = 
-DRIVER_DEVELOPERS = Sbastien Sabl <sable@users.sourceforge.net>
+DRIVER_DEVELOPERS = Sébastien Sablé <sable@users.sourceforge.net>
 BRL_OBJS = @braille_libraries_lb@
 include $(SRC_TOP)braille.mk
 
diff --git a/Drivers/Braille/Libbraille/braille.c b/Drivers/Braille/Libbraille/braille.c
index aec4fb42b..40210e4a1 100644
--- a/Drivers/Braille/Libbraille/braille.c
+++ b/Drivers/Braille/Libbraille/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/LogText/Makefile.in b/Drivers/Braille/LogText/Makefile.in
index 3032ae6e1..45b6108ac 100644
--- a/Drivers/Braille/LogText/Makefile.in
+++ b/Drivers/Braille/LogText/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/LogText/README b/Drivers/Braille/LogText/README
index 74615f7d4..f035e93fe 100644
--- a/Drivers/Braille/LogText/README
+++ b/Drivers/Braille/LogText/README
@@ -1,7 +1,7 @@
 This directory contains the BRLTTY driver for the LogText, which is
 manufactured by Tactilog of Denmark. It was implemented, and is being
 maintained, by Dave Mielke <dave@mielke.cc>. Thanks to Hans Schou
-<chlor@schou.dk> for his help and advice, and to Thomas Srensen
+<chlor@schou.dk> for his help and advice, and to Thomas Sørensen
 <thomassoerens@wanadoo.dk> for testing. As a component of BRLTTY, this driver
 is released under the terms of the GNU Public License.
 
diff --git a/Drivers/Braille/LogText/braille.c b/Drivers/Braille/LogText/braille.c
index 98f246bb6..5440f8b5c 100644
--- a/Drivers/Braille/LogText/braille.c
+++ b/Drivers/Braille/LogText/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/LogText/braille.h b/Drivers/Braille/LogText/braille.h
index dab06b6e3..c64debe85 100644
--- a/Drivers/Braille/LogText/braille.h
+++ b/Drivers/Braille/LogText/braille.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/LogText/brl-out.h b/Drivers/Braille/LogText/brl-out.h
index 1afbe0d31..9219356aa 100644
--- a/Drivers/Braille/LogText/brl-out.h
+++ b/Drivers/Braille/LogText/brl-out.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/MDV/Makefile.in b/Drivers/Braille/MDV/Makefile.in
index fe1037369..d20b27fb8 100644
--- a/Drivers/Braille/MDV/Makefile.in
+++ b/Drivers/Braille/MDV/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/MDV/README b/Drivers/Braille/MDV/README
index b252b4889..8ac5705f8 100644
--- a/Drivers/Braille/MDV/README
+++ b/Drivers/Braille/MDV/README
@@ -1,6 +1,6 @@
 Braille display driver for MDV displays
 
-Written by Stphane Doyon (s.doyon@videotron.ca) in collaboration with
+Written by Stéphane Doyon (s.doyon@videotron.ca) in collaboration with
 Simone Dal Maso <sdalmaso@protec.it>.
 
 This is version 0.8 (August 2000) of this driver.
diff --git a/Drivers/Braille/MDV/braille.c b/Drivers/Braille/MDV/braille.c
index c8257ac10..1333deb4a 100644
--- a/Drivers/Braille/MDV/braille.c
+++ b/Drivers/Braille/MDV/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/MDV/brldefs-md.h b/Drivers/Braille/MDV/brldefs-md.h
index 0c1c10c4e..992430169 100644
--- a/Drivers/Braille/MDV/brldefs-md.h
+++ b/Drivers/Braille/MDV/brldefs-md.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Metec/Makefile.in b/Drivers/Braille/Metec/Makefile.in
index 6f7e4e839..3d41972d9 100644
--- a/Drivers/Braille/Metec/Makefile.in
+++ b/Drivers/Braille/Metec/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Metec/braille.c b/Drivers/Braille/Metec/braille.c
index b10ab8a96..fd8cc0da2 100644
--- a/Drivers/Braille/Metec/braille.c
+++ b/Drivers/Braille/Metec/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Metec/brldefs-mt.h b/Drivers/Braille/Metec/brldefs-mt.h
index 83cc5a8d9..a681a117f 100644
--- a/Drivers/Braille/Metec/brldefs-mt.h
+++ b/Drivers/Braille/Metec/brldefs-mt.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/MiniBraille/Makefile.in b/Drivers/Braille/MiniBraille/Makefile.in
index e5f1373a7..2f89ab89a 100644
--- a/Drivers/Braille/MiniBraille/Makefile.in
+++ b/Drivers/Braille/MiniBraille/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/MiniBraille/braille.c b/Drivers/Braille/MiniBraille/braille.c
index 938027d42..a27f4a4e2 100644
--- a/Drivers/Braille/MiniBraille/braille.c
+++ b/Drivers/Braille/MiniBraille/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/MultiBraille/Makefile.in b/Drivers/Braille/MultiBraille/Makefile.in
index c4ef3f474..636ea622f 100644
--- a/Drivers/Braille/MultiBraille/Makefile.in
+++ b/Drivers/Braille/MultiBraille/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/MultiBraille/braille.c b/Drivers/Braille/MultiBraille/braille.c
index 295673a00..0786ba5f8 100644
--- a/Drivers/Braille/MultiBraille/braille.c
+++ b/Drivers/Braille/MultiBraille/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/MultiBraille/braille.h b/Drivers/Braille/MultiBraille/braille.h
index cd4e46035..ff8a09003 100644
--- a/Drivers/Braille/MultiBraille/braille.h
+++ b/Drivers/Braille/MultiBraille/braille.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/MultiBraille/tables.h b/Drivers/Braille/MultiBraille/tables.h
index 48b1fdb47..83b8f5bda 100644
--- a/Drivers/Braille/MultiBraille/tables.h
+++ b/Drivers/Braille/MultiBraille/tables.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/NinePoint/Makefile.in b/Drivers/Braille/NinePoint/Makefile.in
index 5882a21b7..b3fe5f969 100644
--- a/Drivers/Braille/NinePoint/Makefile.in
+++ b/Drivers/Braille/NinePoint/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/NinePoint/braille.c b/Drivers/Braille/NinePoint/braille.c
index 5a42c9ff8..58ecbd9f8 100644
--- a/Drivers/Braille/NinePoint/braille.c
+++ b/Drivers/Braille/NinePoint/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/NinePoint/brldefs-np.h b/Drivers/Braille/NinePoint/brldefs-np.h
index a4c3d4bb5..d7ed1c203 100644
--- a/Drivers/Braille/NinePoint/brldefs-np.h
+++ b/Drivers/Braille/NinePoint/brldefs-np.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Papenmeier/Makefile.in b/Drivers/Braille/Papenmeier/Makefile.in
index c699a0d79..de4324ded 100644
--- a/Drivers/Braille/Papenmeier/Makefile.in
+++ b/Drivers/Braille/Papenmeier/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Papenmeier/braille.c b/Drivers/Braille/Papenmeier/braille.c
index 2a2897607..d3c33495f 100644
--- a/Drivers/Braille/Papenmeier/braille.c
+++ b/Drivers/Braille/Papenmeier/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -17,21 +17,21 @@
  */
 
 /* This Driver was written as a project in the
- *   HTL W1, Abteilung Elektrotechnik, Wien - sterreich
+ *   HTL W1, Abteilung Elektrotechnik, Wien - Österreich
  *   (Technical High School, Department for electrical engineering,
  *     Vienna, Austria)  http://www.ee.htlw16.ac.at
  *  by
  *   Tibor Becker
  *   Michael Burger
  *   Herbert Gruber
- *   Heimo Schn
+ *   Heimo Schön
  * Teacher:
- *   August Hrandl <august.hoerandl@gmx.at>
+ *   August Hörandl <august.hoerandl@gmx.at>
  */
 /*
  * Support for all Papenmeier Terminal + config file
- *   Heimo.Schn <heimo.schoen@gmx.at>
- *   August Hrandl <august.hoerandl@gmx.at>
+ *   Heimo.Schön <heimo.schoen@gmx.at>
+ *   August Hörandl <august.hoerandl@gmx.at>
  */
 
 #include "prologue.h"
diff --git a/Drivers/Braille/Papenmeier/brldefs-pm.h b/Drivers/Braille/Papenmeier/brldefs-pm.h
index d39920be8..c3ad3482a 100644
--- a/Drivers/Braille/Papenmeier/brldefs-pm.h
+++ b/Drivers/Braille/Papenmeier/brldefs-pm.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Papenmeier/models.h b/Drivers/Braille/Papenmeier/models.h
index 6f7658dec..ceaf34a44 100644
--- a/Drivers/Braille/Papenmeier/models.h
+++ b/Drivers/Braille/Papenmeier/models.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Pegasus/Makefile.in b/Drivers/Braille/Pegasus/Makefile.in
index 9a438c46d..3c25c79b3 100644
--- a/Drivers/Braille/Pegasus/Makefile.in
+++ b/Drivers/Braille/Pegasus/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Pegasus/braille.c b/Drivers/Braille/Pegasus/braille.c
index efe44ee15..de9981cb1 100644
--- a/Drivers/Braille/Pegasus/braille.c
+++ b/Drivers/Braille/Pegasus/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Pegasus/brldefs-pg.h b/Drivers/Braille/Pegasus/brldefs-pg.h
index efc8e1204..9a9df4228 100644
--- a/Drivers/Braille/Pegasus/brldefs-pg.h
+++ b/Drivers/Braille/Pegasus/brldefs-pg.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Seika/Makefile.in b/Drivers/Braille/Seika/Makefile.in
index 2762ac1b4..c99062c57 100644
--- a/Drivers/Braille/Seika/Makefile.in
+++ b/Drivers/Braille/Seika/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Seika/braille.c b/Drivers/Braille/Seika/braille.c
index abc0f8ba1..f01e704f6 100644
--- a/Drivers/Braille/Seika/braille.c
+++ b/Drivers/Braille/Seika/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Seika/brldefs-sk.h b/Drivers/Braille/Seika/brldefs-sk.h
index 151101e2b..90485bab7 100644
--- a/Drivers/Braille/Seika/brldefs-sk.h
+++ b/Drivers/Braille/Seika/brldefs-sk.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Skeleton/Makefile.in b/Drivers/Braille/Skeleton/Makefile.in
index 411abb3ae..036d6b7fd 100644
--- a/Drivers/Braille/Skeleton/Makefile.in
+++ b/Drivers/Braille/Skeleton/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Skeleton/braille.c b/Drivers/Braille/Skeleton/braille.c
index 824e591d6..d37568e80 100644
--- a/Drivers/Braille/Skeleton/braille.c
+++ b/Drivers/Braille/Skeleton/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Skeleton/brldefs-xx.h b/Drivers/Braille/Skeleton/brldefs-xx.h
index 2d724e8ab..caaab4b4a 100644
--- a/Drivers/Braille/Skeleton/brldefs-xx.h
+++ b/Drivers/Braille/Skeleton/brldefs-xx.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/TSI/Makefile.in b/Drivers/Braille/TSI/Makefile.in
index c393cfea1..1ba60b7a6 100644
--- a/Drivers/Braille/TSI/Makefile.in
+++ b/Drivers/Braille/TSI/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/TSI/README b/Drivers/Braille/TSI/README
index eebeb07f8..5d6a760df 100644
--- a/Drivers/Braille/TSI/README
+++ b/Drivers/Braille/TSI/README
@@ -2,7 +2,7 @@ This is the BRLTTY driver for TSI braille displays,
 Version 2.74 April 2004
 
 Author and maintainer:
-        Stphane Doyon
+        Stéphane Doyon
 E-Mail: s.doyon@videotron.ca
 
 This driver contains the code to support most of Telesensory Systems' braille
diff --git a/Drivers/Braille/TSI/braille.c b/Drivers/Braille/TSI/braille.c
index 5f56de56f..324982061 100644
--- a/Drivers/Braille/TSI/braille.c
+++ b/Drivers/Braille/TSI/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -18,7 +18,7 @@
 
 /* TSI/braille.c - Braille display driver for TSI displays
  *
- * Written by Stphane Doyon (s.doyon@videotron.ca)
+ * Written by Stéphane Doyon (s.doyon@videotron.ca)
  *
  * It attempts full support for Navigator 20/40/80 and Powerbraille 40/65/80.
  * It is designed to be compiled into BRLTTY version 3.5.
diff --git a/Drivers/Braille/TSI/braille.h b/Drivers/Braille/TSI/braille.h
index 63d361fc4..3b61ed0b7 100644
--- a/Drivers/Braille/TSI/braille.h
+++ b/Drivers/Braille/TSI/braille.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -18,7 +18,7 @@
 
 /* TSI/braille.h - Configuration file for the TSI braille
  *                 display driver (brl.c)
- * Written by Stphane Doyon (s.doyon@videotron.ca)
+ * Written by Stéphane Doyon (s.doyon@videotron.ca)
  *
  * This file is intended for version 2.2beta3 of the driver.
  */
diff --git a/Drivers/Braille/TSI/brldefs-ts.h b/Drivers/Braille/TSI/brldefs-ts.h
index c79c226b3..fe8dd0f9b 100644
--- a/Drivers/Braille/TSI/brldefs-ts.h
+++ b/Drivers/Braille/TSI/brldefs-ts.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/TTY/Makefile.in b/Drivers/Braille/TTY/Makefile.in
index f7d22f56e..124782e42 100644
--- a/Drivers/Braille/TTY/Makefile.in
+++ b/Drivers/Braille/TTY/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/TTY/braille.c b/Drivers/Braille/TTY/braille.c
index 6dda9b97d..c8cba4999 100644
--- a/Drivers/Braille/TTY/braille.c
+++ b/Drivers/Braille/TTY/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/TTY/braille.h b/Drivers/Braille/TTY/braille.h
index 792395042..30c4c348d 100644
--- a/Drivers/Braille/TTY/braille.h
+++ b/Drivers/Braille/TTY/braille.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/TechniBraille/Makefile.in b/Drivers/Braille/TechniBraille/Makefile.in
index 17e5a557d..ab923db14 100644
--- a/Drivers/Braille/TechniBraille/Makefile.in
+++ b/Drivers/Braille/TechniBraille/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/TechniBraille/braille.c b/Drivers/Braille/TechniBraille/braille.c
index 697cc5749..fb7511868 100644
--- a/Drivers/Braille/TechniBraille/braille.c
+++ b/Drivers/Braille/TechniBraille/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/VideoBraille/Makefile.in b/Drivers/Braille/VideoBraille/Makefile.in
index c7a8bc91a..8bf9ba5f1 100644
--- a/Drivers/Braille/VideoBraille/Makefile.in
+++ b/Drivers/Braille/VideoBraille/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/VideoBraille/README.it b/Drivers/Braille/VideoBraille/README.it
index dcfd6a3ba..8574c480f 100644
--- a/Drivers/Braille/VideoBraille/README.it
+++ b/Drivers/Braille/VideoBraille/README.it
@@ -1,23 +1,23 @@
 Introduzione
 
-Questo  il driver per il display braille Videobraille, distribuito dalla Tiflosoft.
+Questo è il driver per il display braille Videobraille, distribuito dalla Tiflosoft.
 Questo driver funziona SOLO con il modello VB 40 e non funziona con l'aggiornamento PRO 9600.
-Potrei eventualmente aggiungere anche il supporto per il modello PRO 9600 se mi fosse richiesto, poich si tratta solo di qualche breve modifica al codice; non ho implementato ancora il supporto per questo modello semplicemente perch non avrei avuto modo di testarlo.
+Potrei eventualmente aggiungere anche il supporto per il modello PRO 9600 se mi fosse richiesto, poiché si tratta solo di qualche breve modifica al codice; non ho implementato ancora il supporto per questo modello semplicemente perché non avrei avuto modo di testarlo.
 
 Implementazione
 
-Questo driver non  perfetto. Ho riscontrato vari problemi relativi soprattutto alla temporizzazione, e ho dovuto implementare una funzione di scrittura che scrive ogni riga due volte sul display braille, non chiedetermi perch:  solo questione di test.
+Questo driver non è perfetto. Ho riscontrato vari problemi relativi soprattutto alla temporizzazione, e ho dovuto implementare una funzione di scrittura che scrive ogni riga due volte sul display braille, non chiedetermi perché: è solo questione di test.
 Per implementare il driver, ho contattato direttamente chi ha progettato questo display (Acquistapace) per ottenere della documentazione.
 
-Se volete contattarmi per qualunque problema o suggerimento, il mio indirizzo e-mail  christian_comaschi@libero.it
-Per, prima di contattarmi e scrivere che il driver non funziona, controllate che:
-- la vostra Videobraille non  PRO 9600 (se lo  e volete il driver, chiedete);
-- nel file braille.h LPTPORT  impostato correttamente: 0x378 per LPT1, 0x278 per LPT2,...
-Se tutto  giusto, provate a modificare in braille.h i valori VBDELAY, VBCLOCK e VBREFRESHDELAY: questi valori dipendono dalla velocit del computer, devono quindi essere adattati al vostro processore. Non penso che questo sia un buon modo di impostare i tempi di attesa, ma ho voluto rispettare l'implementazione originale, perch quando ho usato altri tipi di temporizzazione ho riscontrato problemi.
+Se volete contattarmi per qualunque problema o suggerimento, il mio indirizzo e-mail è christian_comaschi@libero.it
+Però, prima di contattarmi e scrivere che il driver non funziona, controllate che:
+- la vostra Videobraille non è PRO 9600 (se lo è e volete il driver, chiedete);
+- nel file braille.h LPTPORT è impostato correttamente: 0x378 per LPT1, 0x278 per LPT2,...
+Se tutto è giusto, provate a modificare in braille.h i valori VBDELAY, VBCLOCK e VBREFRESHDELAY: questi valori dipendono dalla velocità del computer, devono quindi essere adattati al vostro processore. Non penso che questo sia un buon modo di impostare i tempi di attesa, ma ho voluto rispettare l'implementazione originale, perché quando ho usato altri tipi di temporizzazione ho riscontrato problemi.
 
 Implementazione della funzione taglia/incolla
 
 Ho aggiornato in seguito il driver per implementare la funzione taglia/incolla in questo modo: si seleziona l'inizio di un blocco tenendo premuto uno dei 40 tastini dell'aggancio cursore e premendo Edit; si contrassegna la fine di un blocco tenendo premuto uno dei 40 tastini e premendo Menu.
 Il tastino da premere va selezionato come nella procedura di aggancio cursore.
 Quindi, per incollare il testo, basta premere contemporaneamente i tasti Attr e Menu.
-Per questa implementazione ho dovuto inventare le combinazioni dei tasti perch la funzione copia/incolla non esisteva nel driver DOS originale.
+Per questa implementazione ho dovuto inventare le combinazioni dei tasti perché la funzione copia/incolla non esisteva nel driver DOS originale.
diff --git a/Drivers/Braille/VideoBraille/braille.c b/Drivers/Braille/VideoBraille/braille.c
index ec59e17a6..a28b82601 100644
--- a/Drivers/Braille/VideoBraille/braille.c
+++ b/Drivers/Braille/VideoBraille/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/VideoBraille/braille.h b/Drivers/Braille/VideoBraille/braille.h
index 7e971f90a..f0a0c4094 100644
--- a/Drivers/Braille/VideoBraille/braille.h
+++ b/Drivers/Braille/VideoBraille/braille.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Virtual/Makefile.in b/Drivers/Braille/Virtual/Makefile.in
index 635f2e561..7f3723555 100644
--- a/Drivers/Braille/Virtual/Makefile.in
+++ b/Drivers/Braille/Virtual/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Virtual/braille.c b/Drivers/Braille/Virtual/braille.c
index e8ae172f4..3c85d8a2c 100644
--- a/Drivers/Braille/Virtual/braille.c
+++ b/Drivers/Braille/Virtual/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/Virtual/braille.h b/Drivers/Braille/Virtual/braille.h
index 06c660e14..c1a613bbe 100644
--- a/Drivers/Braille/Virtual/braille.h
+++ b/Drivers/Braille/Virtual/braille.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/VisioBraille/Makefile.in b/Drivers/Braille/VisioBraille/Makefile.in
index fdbd1fd71..34dc864bc 100644
--- a/Drivers/Braille/VisioBraille/Makefile.in
+++ b/Drivers/Braille/VisioBraille/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/VisioBraille/braille.c b/Drivers/Braille/VisioBraille/braille.c
index 13b64dacd..a97ee9f5a 100644
--- a/Drivers/Braille/VisioBraille/braille.c
+++ b/Drivers/Braille/VisioBraille/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/VisioBraille/braille.h b/Drivers/Braille/VisioBraille/braille.h
index 4654d6c84..0715cbd92 100644
--- a/Drivers/Braille/VisioBraille/braille.h
+++ b/Drivers/Braille/VisioBraille/braille.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/VisioBraille/brl-out.h b/Drivers/Braille/VisioBraille/brl-out.h
index 7a8d5ce32..6bfa8685b 100644
--- a/Drivers/Braille/VisioBraille/brl-out.h
+++ b/Drivers/Braille/VisioBraille/brl-out.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/VisioBraille/brldefs-vs.h b/Drivers/Braille/VisioBraille/brldefs-vs.h
index fdf4315c8..452584e0a 100644
--- a/Drivers/Braille/VisioBraille/brldefs-vs.h
+++ b/Drivers/Braille/VisioBraille/brldefs-vs.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/VisioBraille/vstp.h b/Drivers/Braille/VisioBraille/vstp.h
index 011e8527a..693f5a167 100644
--- a/Drivers/Braille/VisioBraille/vstp.h
+++ b/Drivers/Braille/VisioBraille/vstp.h
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2006-2024 S&S
+ *  Copyright (C) 2006-2025 S&S
  *  Samuel Thibault <samuel.thibault@ens-lyon.org>
  *  Sébastien Hinderer <sebastien.hinderer@ens-lyon.org>
  *
diff --git a/Drivers/Braille/VisioBraille/vstp_main.c b/Drivers/Braille/VisioBraille/vstp_main.c
index 95e32bcd0..d1744ac17 100644
--- a/Drivers/Braille/VisioBraille/vstp_main.c
+++ b/Drivers/Braille/VisioBraille/vstp_main.c
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2006-2024 S&S
+ *  Copyright (C) 2006-2025 S&S
  *  Samuel Thibault <samuel.thibault@ens-lyon.org>
  *  Sébastien Hinderer <sebastien.hinderer@ens-lyon.org>
  *
diff --git a/Drivers/Braille/VisioBraille/vstp_transfer.c b/Drivers/Braille/VisioBraille/vstp_transfer.c
index 2fed5af95..60f4fc41f 100644
--- a/Drivers/Braille/VisioBraille/vstp_transfer.c
+++ b/Drivers/Braille/VisioBraille/vstp_transfer.c
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2006-2024 S&S
+ *  Copyright (C) 2006-2025 S&S
  *  Samuel Thibault <samuel.thibault@ens-lyon.org>
  *  Sébastien Hinderer <sebastien.hinderer@ens-lyon.org>
  *
diff --git a/Drivers/Braille/Voyager/Makefile.in b/Drivers/Braille/Voyager/Makefile.in
index b3e97d9e7..c0744571e 100644
--- a/Drivers/Braille/Voyager/Makefile.in
+++ b/Drivers/Braille/Voyager/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/Voyager/README b/Drivers/Braille/Voyager/README
index 2a3c6bee8..87ca6a145 100644
--- a/Drivers/Braille/Voyager/README
+++ b/Drivers/Braille/Voyager/README
@@ -2,7 +2,7 @@ BRLTTY Driver for the Tieman Voyager Braille Display
 This is the user-space-only version of the driver.
 Version 0.10 (March 2004)
 
-Copyright 2004 by Stphane Doyon  <s.doyon@videotron.ca>
+Copyright 2004 by Stéphane Doyon  <s.doyon@videotron.ca>
 
 This is a partial rewrite of the driver which functions entirely from
 user-space (whereas the previous driver depended on a kernel driver for
@@ -25,7 +25,7 @@ projects and are so supportive.
 Thanks to Andor Demarteau <ademarte@students.cs.uu.nl> who got this whole
 project started and beta-tested all our early buggy attempts.
 
-Thanks to Stphane Dalton who wrote the initial version of the old kernel
+Thanks to Stéphane Dalton who wrote the initial version of the old kernel
 driver. Without his initiative this project would not have been a success.
 
 This rewrite of the driver should allow more flexibility, but is as of yet
diff --git a/Drivers/Braille/Voyager/braille.c b/Drivers/Braille/Voyager/braille.c
index ccb30ee88..86bf3c9dc 100644
--- a/Drivers/Braille/Voyager/braille.c
+++ b/Drivers/Braille/Voyager/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -18,7 +18,7 @@
 
 /* Voyager/braille.c - Braille display driver for Tieman Voyager displays.
  *
- * Written by Stphane Doyon  <s.doyon@videotron.ca>
+ * Written by Stéphane Doyon  <s.doyon@videotron.ca>
  *
  * It is being tested on Voyager 44, should also support Voyager 70.
  * It is designed to be compiled in BRLTTY version 4.1.
diff --git a/Drivers/Braille/Voyager/brldefs-vo.h b/Drivers/Braille/Voyager/brldefs-vo.h
index 16f455e71..007f1b483 100644
--- a/Drivers/Braille/Voyager/brldefs-vo.h
+++ b/Drivers/Braille/Voyager/brldefs-vo.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Braille/XWindow/Makefile.in b/Drivers/Braille/XWindow/Makefile.in
index b4d131538..577a0d712 100644
--- a/Drivers/Braille/XWindow/Makefile.in
+++ b/Drivers/Braille/XWindow/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Braille/XWindow/braille.c b/Drivers/Braille/XWindow/braille.c
index 53761d4bb..9c7e16eff 100644
--- a/Drivers/Braille/XWindow/braille.c
+++ b/Drivers/Braille/XWindow/braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -750,7 +750,15 @@ static int generateToplevel(void)
 #elif defined(USE_XM)
 	"popup()"
 #endif /* USE_ */
-	"\n";
+	"\n"
+	"Mod2<Btn3Down>: "
+#if defined(USE_XAW)
+	"XawPositionSimpleMenu(menu) MenuPopup(menu)"
+#elif defined(USE_XM)
+	"popup()"
+#endif /* USE_ */
+	"\n"
+	;
   Widget tmp_vbox;
   char *disp;
 #ifdef USE_XAW
diff --git a/Drivers/Braille/XWindow/braille.h b/Drivers/Braille/XWindow/braille.h
index 792395042..30c4c348d 100644
--- a/Drivers/Braille/XWindow/braille.h
+++ b/Drivers/Braille/XWindow/braille.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/BrlAPI/WindowEyes/Makefile.in b/Drivers/BrlAPI/WindowEyes/Makefile.in
index b7ae98fea..d75724b1a 100644
--- a/Drivers/BrlAPI/WindowEyes/Makefile.in
+++ b/Drivers/BrlAPI/WindowEyes/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/BrlAPI/WindowEyes/test.c b/Drivers/BrlAPI/WindowEyes/test.c
index 832e912b0..da60987ba 100644
--- a/Drivers/BrlAPI/WindowEyes/test.c
+++ b/Drivers/BrlAPI/WindowEyes/test.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 2009-2024 by The BRLTTY Developers.
+ * Copyright (C) 2009-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/BrlAPI/WindowEyes/webrloem.c b/Drivers/BrlAPI/WindowEyes/webrloem.c
index 7ada6384b..acdc62f34 100644
--- a/Drivers/BrlAPI/WindowEyes/webrloem.c
+++ b/Drivers/BrlAPI/WindowEyes/webrloem.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/BrlAPI/WindowEyes/webrloem.h b/Drivers/BrlAPI/WindowEyes/webrloem.h
index c6e38b0f1..9760dc3bd 100644
--- a/Drivers/BrlAPI/WindowEyes/webrloem.h
+++ b/Drivers/BrlAPI/WindowEyes/webrloem.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Screen/Android/Makefile.in b/Drivers/Screen/Android/Makefile.in
index 54755bfa8..0be926d5d 100644
--- a/Drivers/Screen/Android/Makefile.in
+++ b/Drivers/Screen/Android/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Screen/Android/screen.c b/Drivers/Screen/Android/screen.c
index cd76ad92a..c5d1b96aa 100644
--- a/Drivers/Screen/Android/screen.c
+++ b/Drivers/Screen/Android/screen.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Screen/AtSpi/Makefile.in b/Drivers/Screen/AtSpi/Makefile.in
index 32efa9925..b55c7755c 100644
--- a/Drivers/Screen/AtSpi/Makefile.in
+++ b/Drivers/Screen/AtSpi/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Screen/AtSpi/screen.c b/Drivers/Screen/AtSpi/screen.c
index 680de1802..4833adfbd 100644
--- a/Drivers/Screen/AtSpi/screen.c
+++ b/Drivers/Screen/AtSpi/screen.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Screen/AtSpi2/Makefile.in b/Drivers/Screen/AtSpi2/Makefile.in
index b6ab645e9..9a9dcc552 100644
--- a/Drivers/Screen/AtSpi2/Makefile.in
+++ b/Drivers/Screen/AtSpi2/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Screen/AtSpi2/a2_screen.c b/Drivers/Screen/AtSpi2/a2_screen.c
index f0f7aa5f6..bb20b9c04 100644
--- a/Drivers/Screen/AtSpi2/a2_screen.c
+++ b/Drivers/Screen/AtSpi2/a2_screen.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -71,6 +71,7 @@
 #include "async_io.h"
 #include "async_alarm.h"
 #include "async_event.h"
+#include "unicode.h"
 
 typedef enum {
   PARM_RELEASE,
@@ -98,7 +99,8 @@ static ScreenContentQuality curQuality;
 static long curNumRows, curNumCols;
 static wchar_t **curRows;
 static long *curRowLengths;
-static long curCaret,curPosX,curPosY;
+static long curCaret; /* In unicode codepoints */
+static long curPosX,curPosY; /* In screen offset */
 
 static DBusConnection *bus = NULL;
 
@@ -371,9 +373,9 @@ send_with_reply_and_block(DBusConnection *bus, DBusMessage *msg, int timeout_ms,
   return reply;
 }
 
-static void findPosition(long position, long *px, long *py) {
-  long offset=0, newoffset, x, y;
-  /* XXX: I don't know what they do with necessary combining accents */
+/* px, py are counting unicode codepoints, psx is counting screen coordinate */
+static void findPosition(long position, long *px, long *py, long *psx) {
+  long offset=0, newoffset, x, y, sx;
   for (y=0; y<curNumRows; y++) {
     if ((newoffset = offset + curRowLengths[y]) > position)
       break;
@@ -392,29 +394,62 @@ static void findPosition(long position, long *px, long *py) {
     }
   } else
     x = position-offset;
-  *px = x;
+
+  /* Process text of the line until the wanted position */
+  for (offset=0, sx=0; offset<x && offset<curRowLengths[y]; offset++) {
+    wchar_t wc = curRows[y][offset];
+
+    if (wc == '\n') continue; /* EOL, ignore */
+
+    if (wc == '\t') {
+      /* Switch to next tab */
+      sx = (sx+1+7)&~7;
+      continue;
+    }
+
+    if (getCharacterWidth(wc) != 0) sx++;
+  }
+
+  if (px) *px = x;
   *py = y;
+  if (psx) *psx = sx;
 }
 
+/* Convert from screen coordinates to unicode codepoints offset */
 static long findCoordinates(long xx, long yy) {
-  long offset=0, y;
-  /* XXX: I don't know what they do with necessary combining accents */
+  long offset=0, x, y, sx;
   if (yy >= curNumRows) {
     return -1;
   }
   for (y=0; y<yy; y++) {
     offset += curRowLengths[y];
   }
-  if (xx >= curRowLengths[y])
-    xx = curRowLengths[y]-1;
-  return offset + xx;
+
+  /* Process text of the line until the wanted position */
+  for (x=0, sx=0; sx<xx && x<curRowLengths[y]; x++) {
+    wchar_t wc = curRows[y][x];
+
+    if (wc == '\n') continue; /* EOL, ignore */
+
+    if (wc == '\t') {
+      /* Switch to next tab */
+      sx = (sx+1+7)&~7;
+      continue;
+    }
+
+    if (getCharacterWidth(wc) != 0) sx++;
+  }
+
+  if (x >= curRowLengths[y])
+    x = curRowLengths[y]-1;
+  return offset+x;
 }
 
 static void caretPosition(long caret) {
   if (caret < 0) {
     caret = 0;
   }
-  findPosition(caret,&curPosX,&curPosY);
+  findPosition(caret,NULL,&curPosY,&curPosX);
   curCaret = caret;
 }
 
@@ -695,7 +730,6 @@ static void restartTerm(const char *sender, const char *path) {
 /* Switched to a new object, check whether we want to read it, and if so, restart with it */
 static void tryRestartTerm(const char *sender, const char *path) {
   if (curPath) finiTerm();
-  restartTerm(sender, path);
 
   curRole = getRole(sender, path);
   logMessage(LOG_CATEGORY(SCREEN_DRIVER),
@@ -715,6 +749,9 @@ static void tryRestartTerm(const char *sender, const char *path) {
   }
 
   if (requested) curQuality = SCQ_GOOD;     
+
+  if (curQuality != SCQ_NONE)
+    restartTerm(sender, path);
 }
 
 /* Get the state of an object */
@@ -1018,7 +1055,7 @@ static void AtSpi2HandleEvent(const char *interface, DBusMessage *message)
     if (toDelete <= 0) {
       return;
     }
-    findPosition(detail1,&x,&y);
+    findPosition(detail1,&x,&y,NULL);
     if (dbus_message_iter_get_arg_type(&iter_variant) != DBUS_TYPE_STRING) {
       logMessage(LOG_CATEGORY(SCREEN_DRIVER),
                  "ergl, not string but '%c'", dbus_message_iter_get_arg_type(&iter_variant));
@@ -1078,7 +1115,7 @@ static void AtSpi2HandleEvent(const char *interface, DBusMessage *message)
     if (!curSender || strcmp(sender, curSender) || strcmp(path, curPath)) return;
     logMessage(LOG_CATEGORY(SCREEN_DRIVER),
                "insert %d from %d",detail2,detail1);
-    findPosition(detail1,&x,&y);
+    findPosition(detail1,&x,&y,NULL);
     if (dbus_message_iter_get_arg_type(&iter_variant) != DBUS_TYPE_STRING) {
       logMessage(LOG_CATEGORY(SCREEN_DRIVER),
                  "ergl, not string but '%c'", dbus_message_iter_get_arg_type(&iter_variant));
@@ -1652,11 +1689,34 @@ readCharacters_AtSpi2Screen (const ScreenBox *box, ScreenCharacter *buffer) {
   if (!validateScreenBox(box, cols, curNumRows)) return 0;
 
   for (unsigned int y=0; y<box->height; y+=1) {
-    if (curRowLengths[box->top+y]) {
-      for (unsigned int x=0; x<box->width; x+=1) {
-        if (box->left+x < curRowLengths[box->top+y] - (curRows[box->top+y][curRowLengths[box->top+y]-1]==WC_C('\n'))) {
-          buffer[y*box->width+x].text = curRows[box->top+y][box->left+x];
+    unsigned length = curRowLengths[box->top+y];
+    unsigned offset; /* Position in unicode codepoints */
+    unsigned sx; /* Position in screen offset */
+    unsigned right = box->left+box->width;
+
+    if (length && curRows[box->top+y][length-1] == WC_C('\n'))
+        /* Do not show trailing \n */
+        length--;
+
+    /* Process text of the line while peeking characters */
+    for (offset=0, sx=0; offset < length && sx<right; offset+=1) {
+      wchar_t wc = curRows[box->top+y][offset];
+
+      if (wc == '\t') {
+        /* Complete with spaces up to next tab */
+        unsigned nexttab = (sx+1+7)&~7;
+        for ( ; sx<nexttab; sx+=1) {
+          if (sx >= box->left && sx<right)
+            buffer[y*box->width+sx-box->left].text = WC_C(' ');
         }
+        continue;
+      }
+
+      /* XXX: Ignoring combining characters */
+      if (getCharacterWidth(wc) != 0) {
+        if (sx >= box->left && sx<right)
+          buffer[y*box->width+sx-box->left].text = wc;
+        sx+=1;
       }
     }
   }
@@ -1824,6 +1884,9 @@ setSelection_AtSpi2Screen (int beginOffset, int endOffset) {
   dbus_int32_t begin = beginOffset;
   dbus_int32_t end = endOffset;
 
+  if (!curSender)
+    return 0;
+
   msg = new_method_call(curSender, curPath, SPI2_DBUS_INTERFACE_TEXT, "SetSelection");
   if (!msg)
     return 0;
diff --git a/Drivers/Screen/FileViewer/Makefile.in b/Drivers/Screen/FileViewer/Makefile.in
index f86930c70..69eaa58b6 100644
--- a/Drivers/Screen/FileViewer/Makefile.in
+++ b/Drivers/Screen/FileViewer/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Screen/FileViewer/screen.c b/Drivers/Screen/FileViewer/screen.c
index d03c89641..a49ba34f2 100644
--- a/Drivers/Screen/FileViewer/screen.c
+++ b/Drivers/Screen/FileViewer/screen.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Screen/Grub/Makefile.in b/Drivers/Screen/Grub/Makefile.in
index 66523bbff..7212d8c9b 100644
--- a/Drivers/Screen/Grub/Makefile.in
+++ b/Drivers/Screen/Grub/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Screen/Grub/screen.c b/Drivers/Screen/Grub/screen.c
index 5ac018651..be2282f44 100644
--- a/Drivers/Screen/Grub/screen.c
+++ b/Drivers/Screen/Grub/screen.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Screen/Hurd/Makefile.in b/Drivers/Screen/Hurd/Makefile.in
index ebe4c39c0..f2385f2d7 100644
--- a/Drivers/Screen/Hurd/Makefile.in
+++ b/Drivers/Screen/Hurd/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Screen/Hurd/screen.c b/Drivers/Screen/Hurd/screen.c
index c644dba3f..1b629b67b 100644
--- a/Drivers/Screen/Hurd/screen.c
+++ b/Drivers/Screen/Hurd/screen.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Screen/Hurd/screen.h b/Drivers/Screen/Hurd/screen.h
index b4b2a4a96..ba2fec70e 100644
--- a/Drivers/Screen/Hurd/screen.h
+++ b/Drivers/Screen/Hurd/screen.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Screen/Linux/Makefile.in b/Drivers/Screen/Linux/Makefile.in
index 3015090a6..97c920fd9 100644
--- a/Drivers/Screen/Linux/Makefile.in
+++ b/Drivers/Screen/Linux/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Screen/Linux/bin/chvt-test b/Drivers/Screen/Linux/bin/chvt-test
new file mode 100755
index 000000000..f64682924
--- /dev/null
+++ b/Drivers/Screen/Linux/bin/chvt-test
@@ -0,0 +1,18 @@
+#!/bin/bash
+set -e
+
+console="$(fgconsole)"
+
+index=0
+while ((++index <= 1000))
+do
+   vt=0
+   while ((++vt <= 6))
+   do
+      /usr/bin/chvt $vt
+      sleep 0.001
+   done
+done
+
+chvt "${console}"
+exit 0
diff --git a/Drivers/Screen/Linux/bin/mode-test b/Drivers/Screen/Linux/bin/mode-test
new file mode 100755
index 000000000..4f79d6f0c
--- /dev/null
+++ b/Drivers/Screen/Linux/bin/mode-test
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -e
+
+say() {
+   espeak-ng "${*}" &
+}
+
+run() {
+   say "$((++counter))"
+   echo "${*}"
+   "${@}"
+   sleep 5
+}
+
+console="$(fgconsole)"
+counter=0
+
+run chvt 1
+run systemctl start gdm
+run systemctl stop gdm
+run systemctl start getty@tty1
+
+say "done"
+chvt "${console}"
+exit 0
diff --git a/Drivers/Screen/Linux/screen.c b/Drivers/Screen/Linux/screen.c
index c712d3c90..76b66d1f0 100644
--- a/Drivers/Screen/Linux/screen.c
+++ b/Drivers/Screen/Linux/screen.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -25,6 +25,7 @@
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <sys/ioctl.h>
+#include <sys/sysmacros.h>
 #include <linux/tty.h>
 #include <linux/vt.h>
 #include <linux/kd.h>
@@ -35,6 +36,25 @@
 #define VT_GETHIFONTMASK 0X560D
 #endif /* VT_GETHIFONTMASK */
 
+#ifndef VT_GETCONSIZECSRPOS
+#define VT_GETCONSIZECSRPOS    _IOR('V', 0x10, struct vt_consizecsrpos)
+
+struct vt_consizecsrpos {
+  __u16 con_rows;
+  __u16 con_cols;
+  __u16 csr_row;
+  __u16 csr_col;
+};
+#endif /* VT_GETCONSIZECSRPOS */
+
+#ifndef TIOCL_GETFGCONSOLE
+#define TIOCL_GETFGCONSOLE 16
+#endif /* TIOCL_GETFGCONSOLE */
+
+#ifndef TIOCL_GETBRACKETEDPASTE
+#define TIOCL_GETBRACKETEDPASTE 18
+#endif /* TIOCL_GETBRACKETEDPASTE */
+
 #include "log.h"
 #include "report.h"
 #include "message.h"
@@ -56,24 +76,39 @@ typedef enum {
   PARM_CHARSET,
   PARM_FALLBACK_TEXT,
   PARM_HIGH_FONT_BIT,
+  PARM_LARGE_SCREEN_BUG,
   PARM_LOG_SCREEN_FONT_MAP,
   PARM_RPI_SPACES_BUG,
   PARM_UNICODE,
   PARM_VIRTUAL_TERMINAL_NUMBER,
   PARM_WIDECHAR_PADDING,
 } ScreenParameters;
-#define SCRPARMS "charset", "fallbacktext", "hfb", "logsfm", "rpispacesbug", "unicode", "vt", "widecharpadding"
+#define SCRPARMS "charset", "fallbacktext", "hfb", "largescreenbug", "logsfm", "rpispacesbug", "unicode", "vt", "widecharpadding"
 
 #include "scr_driver.h"
 #include "screen.h"
 
+static void
+logKernelLimitation (unsigned char *alreadyLogged, int major, int minor, const char *message) {
+  if (alreadyLogged) {
+    if (*alreadyLogged) return;
+    *alreadyLogged = 1;
+  }
+
+  logMessage(LOG_WARNING,
+    "pre-%d.%d kernel limitation: %s",
+    major, minor, message
+  );
+}
+
 static const char *problemText;
 static const char *fallbackText;
 
+static unsigned int largeScreenBug;
 static unsigned int logScreenFontMap;
 static unsigned int rpiSpacesBug;
 static unsigned int unicodeEnabled;
-static int virtualTerminalNumber;
+static int selectedVirtualTerminal;
 static unsigned int widecharPadding;
 
 #define UNICODE_ROW_DIRECT 0XF000
@@ -327,13 +362,72 @@ convertCharacter (const wchar_t *character) {
   return WEOF;
 }
 
+static void
+logTruncatedData (size_t expected, size_t actual, const char *type) {
+  logMessage(LOG_ERR,
+    "truncated %s data: expected %"PRIsize " bytes but only read %"PRIsize,
+    type, expected, actual
+  );
+}
+
+static void
+logUnexpectedSize (size_t expected, size_t actual, const char *type) {
+  logMessage(LOG_WARNING,
+    "%s %s read: expected %"PRIsize " bytes but read %"PRIsize,
+    (actual < expected)? "short": "long",
+    type, expected, actual
+  );
+}
+
 static int
-setDeviceName (const char **name, const char *const *names, int strict, const char *description) {
-  return (*name = resolveDeviceName(names, strict, description)) != NULL;
+extendCacheBuffer (void **buffer, size_t *size, size_t newSize, const char *type) {
+  logMessage(LOG_CATEGORY(SCREEN_DRIVER),
+    "extending %s buffer: %"PRIsize " -> %"PRIsize,
+    type, *size, newSize
+  );
+
+  void *newBuffer = malloc(newSize);
+
+  if (!newBuffer) {
+    logMallocError();
+    return 0;
+  }
+
+  if (*buffer) free(*buffer);
+  *buffer = newBuffer;
+  *size = newSize;
+
+  return 1;
+}
+
+static size_t
+readCache (
+  off_t offset, void *buffer, size_t size,
+  const unsigned char *cache, size_t used, const char *type
+) {
+  if (offset > used) {
+    logMessage(LOG_ERR,
+      "invalid %s cache offset: %"PRIsize " > %"PRIsize,
+      type, offset, used
+    );
+  } else {
+    size_t left = used - offset;
+    if (size > left) size = left;
+
+    memcpy(buffer, &cache[offset], size);
+    return size;
+  }
+
+  return 0;
+}
+
+static int
+setDeviceName (const char **name, const char *const *names, int strict, const char *type) {
+  return (*name = resolveDeviceName(names, strict, type)) != NULL;
 }
 
 static char *
-vtName (const char *name, unsigned char vt) {
+vtName (const char *name, int vt) {
   char *string;
 
   if (vt) {
@@ -341,7 +435,7 @@ vtName (const char *name, unsigned char vt) {
     if (name[length-1] == '0') length -= 1;
 
     char buffer[length+4];
-    snprintf(buffer, sizeof(buffer), "%.*s%u", length, name, vt);
+    snprintf(buffer, sizeof(buffer), "%.*s%d", length, name, vt);
 
     string = strdup(buffer);
   } else {
@@ -361,16 +455,20 @@ setConsoleName (void) {
 }
 
 static void
-closeConsole (int *fd) {
+closeConsole (int *fd, const char *type) {
   if (*fd != -1) {
-    logMessage(LOG_CATEGORY(SCREEN_DRIVER), "closing console: fd=%d", *fd);
+    logMessage(LOG_CATEGORY(SCREEN_DRIVER),
+      "closing %s console: fd=%d",
+      type, *fd
+    );
+
     if (close(*fd) == -1) logSystemError("close[console]");
     *fd = -1;
   }
 }
 
 static int
-openConsole (int *fd, int vt) {
+openConsole (int *fd, int vt, const char *type) {
   int opened = 0;
   char *name = vtName(consoleName, vt);
 
@@ -379,9 +477,11 @@ openConsole (int *fd, int vt) {
 
     if (console != -1) {
       logMessage(LOG_CATEGORY(SCREEN_DRIVER),
-                 "console opened: %s: fd=%d", name, console);
+        "%s console opened: %s: fd=%d",
+        type, name, console
+      );
 
-      closeConsole(fd);
+      closeConsole(fd, type);
       *fd = console;
       opened = 1;
     }
@@ -393,7 +493,7 @@ openConsole (int *fd, int vt) {
 }
 
 static int
-controlConsole (int *fd, int vt, int operation, void *argument) {
+controlConsole (int *fd, int vt, const char *type, int operation, void *argument) {
   int result = ioctl(*fd, operation, argument);
 
   if (result == -1) {
@@ -402,7 +502,7 @@ controlConsole (int *fd, int vt, int operation, void *argument) {
                  "console control error %d: fd=%d vt=%d op=0X%04X: %s",
                  errno, *fd, vt, operation, strerror(errno));
 
-      if (openConsole(fd, vt)) {
+      if (openConsole(fd, vt, type)) {
         result = ioctl(*fd, operation, argument);
       }
     }
@@ -411,22 +511,72 @@ controlConsole (int *fd, int vt, int operation, void *argument) {
   return result;
 }
 
-static int consoleDescriptor;
+static const char mainConsoleType[] = "main";
+static int mainConsoleDescriptor;
+
+static const int NO_CONSOLE = 0;
+static const int MAIN_CONSOLE = 0;
 
 static void
-closeCurrentConsole (void) {
-  closeConsole(&consoleDescriptor);
+closeMainConsole (void) {
+  closeConsole(&mainConsoleDescriptor, mainConsoleType);
+}
+
+static int
+openMainConsole (void) {
+  return openConsole(&mainConsoleDescriptor, MAIN_CONSOLE, mainConsoleType);
 }
 
 static int
-openCurrentConsole (void) {
-  return openConsole(&consoleDescriptor, virtualTerminalNumber);
+controlMainConsole (int operation, void *argument) {
+  return controlConsole(&mainConsoleDescriptor, MAIN_CONSOLE, mainConsoleType, operation, argument);
+}
+
+static int
+getConsoleState (struct vt_stat *state) {
+  if (controlMainConsole(VT_GETSTATE, state) != -1) return 1;
+  logSystemError("ioctl[VT_GETSTATE]");
+  return 0;
+}
+
+static int
+getForegroundConsoleNumber (int *vt) {
+  {
+    unsigned char subcode = TIOCL_GETFGCONSOLE;
+    int result = controlMainConsole(TIOCLINUX, &subcode);
+
+    if (result != -1) {
+      *vt = result + 1;
+      return 1;
+    } else {
+      logSystemError("ioctl[TIOCLINUX(TIOCL_GETFGCONSOLE)]");
+    }
+  }
+
+  {
+    struct vt_stat state;
+
+    if (getConsoleState(&state)) {
+      *vt = state.v_active;
+      return 1;
+    }
+  }
+
+  return 0;
+}
+
+static const char currentConsoleType[] = "current";
+static int currentConsoleDescriptor;
+
+static inline int
+isCurrentConsoleOpen (void) {
+  return currentConsoleDescriptor != -1;
 }
 
 static int
 controlCurrentConsole (int operation, void *argument) {
-  if (consoleDescriptor != -1) {
-    return controlConsole(&consoleDescriptor, virtualTerminalNumber, operation, argument);
+  if (isCurrentConsoleOpen()) {
+    return controlConsole(&currentConsoleDescriptor, selectedVirtualTerminal, currentConsoleType, operation, argument);
   }
 
   switch (operation) {
@@ -467,39 +617,82 @@ controlCurrentConsole (int operation, void *argument) {
       break;
   }
 
+  logMessage(LOG_WARNING, "current console not open");
   errno = EAGAIN;
   return -1;
 }
 
-static const int NO_CONSOLE = 0;
-static const int MAIN_CONSOLE = 0;
-static int mainConsoleDescriptor;
-
 static void
-closeMainConsole (void) {
-  closeConsole(&mainConsoleDescriptor);
+closeCurrentConsole (void) {
+  closeConsole(&currentConsoleDescriptor, currentConsoleType);
 }
 
 static int
-openMainConsole (void) {
-  return openConsole(&mainConsoleDescriptor, MAIN_CONSOLE);
-}
+openCurrentConsole (int *vt) {
+  if (openConsole(&currentConsoleDescriptor, selectedVirtualTerminal, currentConsoleType)) {
+    if (selectedVirtualTerminal) return 1;
+    unsigned int device;
 
-static int
-controlMainConsole (int operation, void *argument) {
-  return controlConsole(&mainConsoleDescriptor, MAIN_CONSOLE, operation, argument);
+    if (controlCurrentConsole(TIOCGDEV, &device) != -1) {
+      unsigned int ttyNumber = minor(device);
+
+      {
+        const unsigned int expected = TTY_MAJOR;
+        unsigned int actual = major(device);
+
+        if (actual != expected) {
+          logMessage(LOG_WARNING,
+            "unexpected foreground tty device type (expected %u, got %u)",
+            expected, actual
+          );
+
+          return 0;
+        }
+      }
+
+      {
+        const unsigned int ttyNumberMask = 0X3F;
+
+        if ((ttyNumber & ttyNumberMask) != ttyNumber) {
+          logMessage(LOG_WARNING,
+            "unexpected foreground tty device group (expected %d, got %u)",
+            *vt, ttyNumber
+          );
+
+          return 0;
+        }
+      }
+
+      if (ttyNumber != *vt) {
+        logMessage(LOG_WARNING,
+          "unexpected foreground tty number (expecting %d, got %u) - assuming VT switch",
+          *vt, ttyNumber
+        );
+
+        *vt = ttyNumber;
+      }
+
+      return 1;
+    } else {
+      logSystemError("ioctl[TIOCGDEV]");
+    }
+  }
+
+  return 0;
 }
 
-static const char *unicodeName = NULL;
+static const char unicodeDeviceType[] = "unicode";
+static const char *unicodeDeviceName = NULL;
+static int unicodeDescriptor;
 
 static int
-setUnicodeName (void) {
+setUnicodeDeviceName (void) {
   static const char *const names[] = {"vcsu", "vcsu0", NULL};
-  return setDeviceName(&unicodeName, names, 1, "unicode");
+  return setDeviceName(&unicodeDeviceName, names, 1, unicodeDeviceType);
 }
 
 static void
-closeUnicode (int *fd) {
+closeUnicodeDevice (int *fd) {
   if (*fd != -1) {
     logMessage(LOG_CATEGORY(SCREEN_DRIVER), "closing unicode: fd=%d", *fd);
     if (close(*fd) == -1) logSystemError("close[unicode]");
@@ -508,25 +701,25 @@ closeUnicode (int *fd) {
 }
 
 static int
-openUnicode (int *fd, int vt) {
-  if (!unicodeName) return 0;
+openUnicodeDevice (int *fd, int vt) {
+  if (!unicodeDeviceName) return 0;
   if (*fd != -1) return 1;
 
   int opened = 0;
-  char *name = vtName(unicodeName, vt);
+  char *name = vtName(unicodeDeviceName, vt);
 
   if (name) {
     int unicode = openCharacterDevice(name, O_RDWR, VCS_MAJOR, 0X40|vt);
 
     if (unicode != -1) {
       logMessage(LOG_CATEGORY(SCREEN_DRIVER),
-                 "unicode opened: %s: fd=%d", name, unicode);
+                 "unicode device opened: %s: fd=%d", name, unicode);
 
-      closeUnicode(fd);
       *fd = unicode;
       opened = 1;
     } else {
-      unicodeName = NULL;
+      logMessage(LOG_ERR, "unicode device open error: %s: %s", name, strerror(errno));
+      unicodeDeviceName = NULL;
     }
 
     free(name);
@@ -535,22 +728,20 @@ openUnicode (int *fd, int vt) {
   return opened;
 }
 
-static int unicodeDescriptor;
-
 static void
-closeCurrentUnicode (void) {
-  closeUnicode(&unicodeDescriptor);
+closeCurrentUnicodeDevice (void) {
+  closeUnicodeDevice(&unicodeDescriptor);
 }
 
 static int
-openCurrentUnicode (void) {
+openCurrentUnicodeDevice (void) {
   if (!unicodeEnabled) return 0;
-  return openUnicode(&unicodeDescriptor, virtualTerminalNumber);
+  return openUnicodeDevice(&unicodeDescriptor, selectedVirtualTerminal);
 }
 
 static size_t
 readUnicodeDevice (off_t offset, void *buffer, size_t size) {
-  if (openCurrentUnicode()) {
+  if (openCurrentUnicodeDevice()) {
     const ssize_t count = pread(unicodeDescriptor, buffer, size, offset);
 
     if (count != -1) {
@@ -577,40 +768,27 @@ readUnicodeDevice (off_t offset, void *buffer, size_t size) {
       return count;
     }
 
-    if (errno != ENODATA) logSystemError("unicode read");
+    if (errno != ENODATA) logSystemError("unicode device read");
   }
 
   return 0;
 }
 
-static unsigned char *unicodeCacheBuffer;
+static void *unicodeCacheBuffer;
 static size_t unicodeCacheSize;
 static size_t unicodeCacheUsed;
 
 static size_t
 readUnicodeCache (off_t offset, void *buffer, size_t size) {
-  if (offset <= unicodeCacheUsed) {
-    size_t left = unicodeCacheUsed - offset;
-    if (size > left) size = left;
-
-    memcpy(buffer, &unicodeCacheBuffer[offset], size);
-    return size;
-  } else {
-    logMessage(LOG_ERR, "invalid unicode cache offset: %u", (unsigned int)offset);
-  }
-
-  return 0;
+  return readCache(offset, buffer, size, unicodeCacheBuffer, unicodeCacheUsed, unicodeDeviceType);
 }
 
 static int
 readUnicodeData (off_t offset, void *buffer, size_t size) {
-  size_t count = (unicodeCacheBuffer? readUnicodeCache: readUnicodeDevice)(offset, buffer, size);
+  size_t count = (unicodeCacheUsed? readUnicodeCache: readUnicodeDevice)(offset, buffer, size);
   if (count == size) return 1;
 
-  logMessage(LOG_ERR,
-             "truncated unicode data: expected %zu bytes but read %zu",
-             size, count);
-
+  logTruncatedData(size, count, unicodeDeviceType);
   return 0;
 }
 
@@ -622,31 +800,23 @@ readUnicodeContent (off_t offset, uint32_t *buffer, size_t count) {
 }
 
 static int
-refreshUnicodeCache (size_t size) {
-  size *= 4;
+refreshUnicodeCache (unsigned int characters) {
+  const size_t expectedSize = characters * sizeof(uint32_t);
 
-  if (size > unicodeCacheSize) {
-    const unsigned int bits = 10;
-    const unsigned int mask = (1 << bits) - 1;
-
-    size |= mask;
-    size += 1;
-    unsigned char *buffer = malloc(size);
-
-    if (!buffer) {
-      logMallocError();
+  if (expectedSize > unicodeCacheSize) {
+    if (!extendCacheBuffer(&unicodeCacheBuffer, &unicodeCacheSize, expectedSize, unicodeDeviceType)) {
       return 0;
     }
-
-    if (unicodeCacheBuffer) free(unicodeCacheBuffer);
-    unicodeCacheBuffer = buffer;
-    unicodeCacheSize = size;
   }
 
   unicodeCacheUsed = readUnicodeDevice(0, unicodeCacheBuffer, unicodeCacheSize);
-  return 1;
+  if (unicodeCacheUsed == expectedSize) return 1;
+
+  logUnexpectedSize(expectedSize, unicodeCacheUsed, unicodeDeviceType);
+  return 0;
 }
 
+static const char screenDeviceType[] = "screen";
 static const char *screenName = NULL;
 static int screenDescriptor;
 
@@ -660,18 +830,19 @@ static int inTextMode;
 static TimePeriod mappingRecalculationTimer;
 
 typedef struct {
-  unsigned char rows;
-  unsigned char columns;
+  unsigned short int columns;
+  unsigned short int rows;
 } ScreenSize;
 
 typedef struct {
-  unsigned char column;
-  unsigned char row;
+  unsigned short int column;
+  unsigned short int row;
 } ScreenLocation;
 
 typedef struct {
   ScreenSize size;
-  ScreenLocation location;
+  ScreenLocation cursor;
+  unsigned char hideCursor:1;
 } ScreenHeader;
 
 #ifdef HAVE_SYS_POLL_H
@@ -697,7 +868,7 @@ canMonitorScreen (void) {
 static int
 setScreenName (void) {
   static const char *const names[] = {"vcsa", "vcsa0", "vcc/a", NULL};
-  return setDeviceName(&screenName, names, 0, "screen");
+  return setDeviceName(&screenName, names, 0, screenDeviceType);
 }
 
 static int
@@ -714,6 +885,8 @@ openScreenDevice (int *fd, int vt) {
 
       *fd = screen;
       opened = 1;
+    } else {
+      logMessage(LOG_ERR, "screen open error: %s: %s", name, strerror(errno));
     }
 
     free(name);
@@ -739,15 +912,16 @@ closeCurrentScreen (void) {
 }
 
 static int
-setCurrentScreen (unsigned char vt) {
+setCurrentScreen (int vt) {
   int screen;
   if (!openScreenDevice(&screen, vt)) return 0;
 
   closeCurrentConsole();
-  closeCurrentUnicode();
+  closeCurrentUnicodeDevice();
   closeCurrentScreen();
+
   screenDescriptor = screen;
-  virtualTerminalNumber = vt;
+  selectedVirtualTerminal = vt;
 
   isMonitorable = canMonitorScreen();
   logMessage(LOG_CATEGORY(SCREEN_DRIVER),
@@ -760,7 +934,7 @@ setCurrentScreen (unsigned char vt) {
 }
 
 static size_t
-readScreenDevice (off_t offset, void *buffer, size_t size) {
+vcsaReadDevice (off_t offset, void *buffer, size_t size) {
   const ssize_t count = pread(screenDescriptor, buffer, size, offset);
   if (count != -1) return count;
 
@@ -768,33 +942,161 @@ readScreenDevice (off_t offset, void *buffer, size_t size) {
   return 0;
 }
 
-static unsigned char *screenCacheBuffer;
-static size_t screenCacheSize;
+static int
+vcsaHasClamping (void) {
+  int major, minor;
+  if (!getKernelRelease(&major, &minor, NULL)) return 0;
+
+  if (major < 5) return 0;
+  if (major > 5) return 1;
+  return minor >= 1;
+}
+
+typedef struct {
+  struct {
+    uint8_t rows;
+    uint8_t columns;
+  } size;
+
+  struct {
+    uint8_t column;
+    uint8_t row;
+  } cursor;
+} VcsaHeader;
+
+static int
+vcsaReadHeader (ScreenHeader *header) {
+  VcsaHeader vcsa;
+
+  {
+    size_t vcsaSize = sizeof(vcsa);
+    const size_t count = vcsaReadDevice(0, &vcsa, vcsaSize);
+    if (!count) return 0;
+
+    if (count < vcsaSize) {
+      logBytes(LOG_ERR,
+        "truncated vcsa header: %"PRIsize " < %"PRIsize,
+        &vcsa, count, count, vcsaSize
+      );
+
+      return 0;
+    }
+  }
+
+  header->size.columns = vcsa.size.columns;
+  header->size.rows = vcsa.size.rows;
+  header->cursor.column = vcsa.cursor.column;
+  header->cursor.row = vcsa.cursor.row;
+
+  if (isCurrentConsoleOpen()) {
+    if ((header->size.columns == UINT8_MAX) || (header->size.rows == UINT8_MAX) || largeScreenBug) {
+      struct winsize winSize;
+
+      if (controlCurrentConsole(TIOCGWINSZ, &winSize) != -1) {
+        header->size.columns = winSize.ws_col;
+        header->size.rows = winSize.ws_row;
+      } else {
+        logSystemError("ioctl[TIOCGWINSZ]");
+      }
+    }
+  }
+
+  if (largeScreenBug) {
+    if (header->cursor.column >= header->size.columns) {
+      header->cursor.column = header->size.columns - 1;
+    }
+
+    if (header->cursor.row >= header->size.rows) {
+      header->cursor.row = header->size.rows - 1;
+    }
+  } else if ((header->cursor.column == UINT8_MAX) || (header->cursor.row == UINT8_MAX)) {
+    header->hideCursor = 1;
+
+    {
+      static unsigned char alreadyLogged = 0;
+
+      logKernelLimitation(
+        &alreadyLogged, 6, 16,
+        "screen cursor not rendered when beyond column and/or row 255"
+      );
+    }
+  }
+
+  return 1;
+}
 
 static size_t
-readScreenCache (off_t offset, void *buffer, size_t size) {
-  if (offset <= screenCacheSize) {
-    size_t left = screenCacheSize - offset;
+readScreenDevice (off_t offset, void *buffer, size_t size) {
+  size_t result = 0;
+  const size_t headerSize = sizeof(ScreenHeader);
 
-    if (size > left) size = left;
-    memcpy(buffer, &screenCacheBuffer[offset], size);
-    return size;
-  } else {
-    logMessage(LOG_ERR, "invalid screen cache offset: %u", (unsigned int)offset);
+  if (offset < headerSize) {
+    static unsigned char useGetConSizeCsrPos = 1;
+    unsigned char useVcsa = 1;
+
+    ScreenHeader header;
+    memset(&header, 0, sizeof(header));
+
+    if (useGetConSizeCsrPos && isCurrentConsoleOpen()) {
+      struct vt_consizecsrpos info;
+
+      if (controlCurrentConsole(VT_GETCONSIZECSRPOS, &info) != -1) {
+        useVcsa = 0;
+        header.size.columns = info.con_cols;
+        header.size.rows = info.con_rows;
+        header.cursor.column = info.csr_col;
+        header.cursor.row = info.csr_row;
+      } else {
+        if (errno == ENOTTY) useGetConSizeCsrPos = 0;
+        logSystemError("ioctl[VT_GETCONSIZECSRPOS]");
+      }
+    }
+
+    if (useVcsa) {
+      if (!vcsaReadHeader(&header)) {
+        goto done;
+      }
+    }
+
+    {
+      const void *from = &header + offset;
+      size_t count = headerSize - offset;
+      if (size < count) count = size;
+
+      buffer = mempcpy(buffer, from, count);
+      result += count;
+
+      if (!(size -= count)) goto done;
+      offset = headerSize;
+    }
   }
 
-  return 0;
+  offset -= headerSize;
+  offset += sizeof(VcsaHeader);
+
+  size_t count = vcsaReadDevice(offset, buffer, size);
+  if (!count) goto done;
+  result += count;
+
+done:
+  return result;
+}
+
+static void *screenCacheBuffer;
+static size_t screenCacheSize;
+static size_t screenCacheUsed;
+
+static size_t
+readScreenCache (off_t offset, void *buffer, size_t size) {
+  return readCache(offset, buffer, size, screenCacheBuffer, screenCacheUsed, screenDeviceType);
 }
 
 static int
 readScreenData (off_t offset, void *buffer, size_t size) {
-  size_t count = (screenCacheBuffer? readScreenCache: readScreenDevice)(offset, buffer, size);
+  size_t count = (screenCacheUsed? readScreenCache: readScreenDevice)(offset, buffer, size);
   if (count == size) return 1;
 
-  logMessage(LOG_ERR,
-             "truncated screen data: expected %zu bytes but read %zu",
-             size, count);
-
+  logTruncatedData(size, count, screenDeviceType);
   return 0;
 }
 
@@ -803,11 +1105,6 @@ readScreenHeader (ScreenHeader *header) {
   return readScreenData(0, header, sizeof(*header));
 }
 
-static int
-readScreenSize (ScreenSize *size) {
-  return readScreenData(0, size, sizeof(*size));
-}
-
 static int
 readScreenContent (off_t offset, uint16_t *buffer, size_t count) {
   count *= sizeof(*buffer);
@@ -816,67 +1113,81 @@ readScreenContent (off_t offset, uint16_t *buffer, size_t count) {
   return readScreenData(offset, buffer, count);
 }
 
-static size_t
-getScreenBufferSize (const ScreenSize *screenSize) {
+static inline size_t
+toScreenBufferSize (const ScreenSize *screenSize) {
   return (screenSize->columns * screenSize->rows * 2) + sizeof(ScreenHeader);
 }
 
-static size_t
-refreshScreenBuffer (unsigned char **screenBuffer, size_t *screenSize) {
-  if (!*screenBuffer) {
+static void
+logTruncatedScreenHeader (const ScreenHeader *header, size_t count) {
+  logBytes(LOG_ERR,
+    "truncated screen header: %"PRIsize " < %"PRIsize,
+    header, count, count, sizeof(*header)
+  );
+}
+
+static int
+refreshScreenCache (unsigned int *characters) {
+  if (!screenCacheBuffer) {
     ScreenHeader header;
+    const size_t headerSize = sizeof(header);
 
     {
-      size_t size = sizeof(header);
-      size_t count = readScreenDevice(0, &header, size);
-      if (!count) return 0;
+      size_t bytesRead = readScreenDevice(0, &header, headerSize);
+      if (!bytesRead) return 0;
 
-      if (count < size) {
-        logBytes(LOG_ERR, "truncated screen header", &header, count);
+      if (bytesRead < headerSize) {
+        logTruncatedScreenHeader(&header, bytesRead);
         return 0;
       }
     }
 
     {
-      size_t size = getScreenBufferSize(&header.size);
-      unsigned char *buffer = malloc(size);
+      const size_t size = toScreenBufferSize(&header.size);
+
+      logMessage(LOG_CATEGORY(SCREEN_DRIVER),
+        "allocating screen buffer: %"PRIsize,
+        size
+      );
+
+      void *buffer = malloc(size);
 
       if (!buffer) {
         logMallocError();
         return 0;
       }
 
-      *screenBuffer = buffer;
-      *screenSize = size;
+      screenCacheBuffer = buffer;
+      screenCacheSize = size;
     }
   }
 
+  unsigned int bufferExtensionCounter = 10;
   while (1) {
-    size_t count = readScreenDevice(0, *screenBuffer, *screenSize);
-    if (!count) return 0;
-
-    if (count < sizeof(ScreenHeader)) {
-      logBytes(LOG_ERR, "truncated screen header", *screenBuffer, count);
-      return 0;
-    }
-
-    {
-      ScreenHeader *header = (void *)*screenBuffer;
-      size_t size = getScreenBufferSize(&header->size);
-      if (count >= size) return header->size.columns * header->size.rows;
+    screenCacheUsed = readScreenDevice(0, screenCacheBuffer, screenCacheSize);
+    if (!screenCacheUsed) return 0;
+    const ScreenHeader *header = screenCacheBuffer;
 
-      {
-        unsigned char *buffer = realloc(*screenBuffer, size);
+    if (screenCacheUsed < sizeof(*header)) {
+      logTruncatedScreenHeader(header, screenCacheUsed);
+    } else {
+      const size_t expectedSize = toScreenBufferSize(&header->size);
 
-        if (!buffer) {
-          logMallocError();
-          return 0;
-        }
+      if (screenCacheUsed == expectedSize) {
+        *characters = header->size.columns * header->size.rows;
+        return 1;
+      }
 
-        *screenBuffer = buffer;
-        *screenSize = size;
+      if (expectedSize <= screenCacheSize) {
+        logUnexpectedSize(expectedSize, screenCacheUsed, screenDeviceType);
+      } else if (!--bufferExtensionCounter) {
+        logMessage(LOG_WARNING, "too many screen buffer extensions");
+      } else if (extendCacheBuffer(&screenCacheBuffer, &screenCacheSize, expectedSize, screenDeviceType)) {
+        continue;
       }
     }
+
+    return 0;
   }
 }
 
@@ -967,10 +1278,15 @@ setVgaCharacterCount (int force) {
                      cfo.width, cfo.height, cfo.charcount);
           vgaCharacterCount = cfo.charcount;
         } else {
-          if (errno == ENOSYS) isNotImplemented = 1;
+          int logLevel = LOG_WARNING;
+
+          if (errno == ENOSYS) {
+            isNotImplemented = 1;
+            logLevel = LOG_CATEGORY(SCREEN_DRIVER);
+          }
 
           if (errno != EINVAL) {
-            logMessage(LOG_WARNING, "ioctl[KDFONTOP[GET]]: %s", strerror(errno));
+            logMessage(logLevel, "ioctl[KDFONTOP(GET)]: %s", strerror(errno));
           }
         }
       }
@@ -1041,10 +1357,12 @@ determineAttributesMasks (void) {
     }
 
     {
-      ScreenSize size;
+      ScreenHeader header;
 
-      if (readScreenSize(&size)) {
-        const size_t count = size.columns * size.rows;
+      if (readScreenHeader(&header)) {
+        const ScreenSize *size = &header.size;
+
+        const size_t count = size->columns * size->rows;
         unsigned short buffer[count];
 
         if (readScreenContent(0, buffer, ARRAY_COUNT(buffer))) {
@@ -1137,7 +1455,7 @@ readScreenRow (int row, size_t size, ScreenCharacter *characters, int *offsets)
       if (unicode) {
         wc = *unicode++;
 
-        if ((blanks > 0) && (wc == WC_C(' '))) {
+        if ((blanks > 0) && iswspace(wc)) {
           blanks -= 1;
           wc = WEOF;
         } else if (widecharPadding) {
@@ -1300,6 +1618,17 @@ processParameters_LinuxScreen (char **parameters) {
     }
   }
 
+  largeScreenBug = !vcsaHasClamping();
+  {
+    const char *parameter = parameters[PARM_LARGE_SCREEN_BUG];
+
+    if (parameter && *parameter) {
+      if (!validateYesNo(&largeScreenBug, parameter)) {
+        logMessage(LOG_WARNING, "%s: %s", "invalid large screen bug setting", parameter);
+      }
+    }
+  }
+
   logScreenFontMap = 0;
   {
     const char *parameter = parameters[PARM_LOG_SCREEN_FONT_MAP];
@@ -1333,7 +1662,7 @@ processParameters_LinuxScreen (char **parameters) {
     }
   }
 
-  virtualTerminalNumber = 0;
+  selectedVirtualTerminal = 0;
   {
     const char *parameter = parameters[PARM_VIRTUAL_TERMINAL_NUMBER];
 
@@ -1341,7 +1670,7 @@ processParameters_LinuxScreen (char **parameters) {
       static const int minimum = 0;
       static const int maximum = MAX_NR_CONSOLES;
 
-      if (!validateInteger(&virtualTerminalNumber, parameter, &minimum, &maximum)) {
+      if (!validateInteger(&selectedVirtualTerminal, parameter, &minimum, &maximum)) {
         logMessage(LOG_WARNING, "%s: %s", "invalid virtual terminal number", parameter);
       }
     }
@@ -1373,13 +1702,14 @@ REPORT_LISTENER(lxBrailleDeviceOfflineListener) {
 static int
 construct_LinuxScreen (void) {
   mainConsoleDescriptor = -1;
+  currentConsoleDescriptor = -1;
   screenDescriptor = -1;
-  consoleDescriptor = -1;
   unicodeDescriptor = -1;
 
   screenUpdated = 0;
   screenCacheBuffer = NULL;
   screenCacheSize = 0;
+  screenCacheUsed = 0;
 
   unicodeCacheBuffer = NULL;
   unicodeCacheSize = 0;
@@ -1401,17 +1731,19 @@ construct_LinuxScreen (void) {
   if (setScreenName()) {
     if (setConsoleName()) {
       if (unicodeEnabled) {
-        if (!setUnicodeName()) {
+        if (!setUnicodeDeviceName()) {
           unicodeEnabled = 0;
         }
       }
 
       if (openMainConsole()) {
-        if (setCurrentScreen(virtualTerminalNumber)) {
+        if (setCurrentScreen(selectedVirtualTerminal)) {
           openKeyboard();
           brailleDeviceOfflineListener = registerReportListener(REPORT_BRAILLE_DEVICE_OFFLINE, lxBrailleDeviceOfflineListener, NULL);
           return 1;
         }
+      } else {
+        logSystemError("main console open");
       }
     }
   }
@@ -1447,6 +1779,7 @@ destruct_LinuxScreen (void) {
     screenCacheBuffer = NULL;
   }
   screenCacheSize = 0;
+  screenCacheUsed = 0;
 
   if (unicodeCacheBuffer) {
     free(unicodeCacheBuffer);
@@ -1479,57 +1812,69 @@ poll_LinuxScreen (void) {
   return poll;
 }
 
-static int
-getConsoleState (struct vt_stat *state) {
-  if (controlMainConsole(VT_GETSTATE, state) != -1) return 1;
-  logSystemError("ioctl[VT_GETSTATE]");
-  problemText = gettext("can't get console state");
-  return 0;
-}
-
 static int
 isUnusedConsole (int vt) {
-  int isUnused = 1;
-  unsigned char *buffer = NULL;
-  size_t size = 0;
+  int isUnused = 0;
+  int fd;
+
+  if (openScreenDevice(&fd, vt)) {
+    const off_t start = sizeof(VcsaHeader);
+    off_t offset = start;
+    uint16_t firstCharacter;
+
+    while (1) {
+      uint16_t buffer[0X800];
+      size_t bytesRead = pread(fd, buffer, sizeof(buffer), offset);
 
-  if (refreshScreenBuffer(&buffer, &size)) {
-    const ScreenHeader *header = (void *)buffer;
-    const uint16_t *from = (void *)(buffer + sizeof(*header));
-    const uint16_t *to = (void *)(buffer + getScreenBufferSize(&header->size));
+      if (!bytesRead) {
+        isUnused = 1;
+        goto done;
+      }
 
-    if (from < to) {
-      const uint16_t vga = *from++;
+      const uint16_t *from = buffer;
+      const uint16_t *to = from + (bytesRead / sizeof(buffer[0]));
+      if (offset == start) firstCharacter = *from++;
 
       while (from < to) {
-        if (*from++ != vga) {
-          isUnused = 0;
-          break;
-        }
+        if (*from != firstCharacter) goto done;
+        from += 1;
       }
+
+      offset += bytesRead;
+    }
+
+  done:
+    close(fd);
+    fd = -1;
+  } else {
+    switch (errno) {
+      default:
+        logMessage(LOG_WARNING, "can't open screen %d: %s", vt, strerror(errno));
+        break;
+
+      case ENOENT: // device name not defined
+      case EPERM: // can't define device within nodev directory
+      case ENXIO: // device not defined within kernel
+        isUnused = 1;
+        break;
     }
   }
 
-  if (buffer) free(buffer);
   return isUnused;
 }
 
 static int
-canOpenCurrentConsole (void) {
-  typedef uint16_t OpenableConsoles;
-  static OpenableConsoles openableConsoles = 0;
-
-  struct vt_stat state;
-  if (!getConsoleState(&state)) return 0;
-
-  int console = virtualTerminalNumber;
-  if (!console) console = state.v_active;
-  OpenableConsoles bit = 1 << console;
+canOpenConsole (int vt) {
+  static uint64_t openableConsoles = 0;
+  uint64_t bit = UINT64_C(1) << vt;
 
   if (bit && !(openableConsoles & bit)) {
-    if (console != MAIN_CONSOLE) {
+    if (vt != MAIN_CONSOLE) {
+      struct vt_stat state;
+      if (!getConsoleState(&state)) return 0;
+
       if (!(state.v_state & bit)) {
-        if (isUnusedConsole(console)) {
+        if (isUnusedConsole(vt)) {
           return 0;
         }
       }
@@ -1541,92 +1886,130 @@ canOpenCurrentConsole (void) {
   return 1;
 }
 
+static int
+testTextMode (void) {
+  int mode;
+
+  if (controlCurrentConsole(KDGETMODE, &mode) == -1) {
+    logSystemError("ioctl[KDGETMODE]");
+  } else if (mode == KD_TEXT) {
+    if (afterTimePeriod(&mappingRecalculationTimer, NULL)) {
+      setTranslationTable(0);
+    }
+
+    return 1;
+  }
+
+  return 0;
+}
+
 static int
 getConsoleNumber (void) {
-  int console;
+  int vt;
 
-  if (virtualTerminalNumber) {
-    console = virtualTerminalNumber;
-  } else {
-    struct vt_stat state;
-    if (!getConsoleState(&state)) return NO_CONSOLE;
-    console = state.v_active;
+  if (selectedVirtualTerminal) {
+    vt = selectedVirtualTerminal;
+  } else if (!getForegroundConsoleNumber(&vt)) {
+    vt = NO_CONSOLE;
   }
 
-  if (console != currentConsoleNumber) {
+  if (vt != currentConsoleNumber) {
     closeCurrentConsole();
   }
 
-  if (consoleDescriptor == -1) {
-    if (!canOpenCurrentConsole()) {
-      problemText = gettext("console not in use");
-    } else if (!openCurrentConsole()) {
-      problemText = gettext("can't open console");
-    }
-
-    setTranslationTable(1);
-  }
+  inTextMode = 1;
 
-  return console;
-}
+  if (vt != NO_CONSOLE) {
+    if (isCurrentConsoleOpen()) {
+      inTextMode = testTextMode();
+    } else {
+      if (!canOpenConsole(vt)) {
+        problemText = gettext("console not in use");
+      } else if (!openCurrentConsole(&vt)) {
+        logSystemError("current console open");
+        problemText = gettext("can't open console");
+      } else {
+        inTextMode = testTextMode();
+      }
 
-static int
-testTextMode (void) {
-  if (problemText) return 0;
-  int mode;
+      setTranslationTable(1);
+    }
+  }
 
-  if (controlCurrentConsole(KDGETMODE, &mode) == -1) {
-    logSystemError("ioctl[KDGETMODE]");
-  } else if (mode == KD_TEXT) {
-    if (afterTimePeriod(&mappingRecalculationTimer, NULL)) setTranslationTable(0);
-    return 1;
+  if (!inTextMode) {
+    problemText = gettext("screen not in text mode");
   }
 
-  problemText = gettext("screen not in text mode");
-  return 0;
+  return vt;
 }
 
 static int
 refreshCache (void) {
-  size_t size = refreshScreenBuffer(&screenCacheBuffer, &screenCacheSize);
-  if (!size) return 0;
+  unsigned int characters;
 
-  if (unicodeEnabled) {
-    if (!refreshUnicodeCache(size)) {
-      return 0;
-    }
+  if (!refreshScreenCache(&characters)) {
+    screenCacheUsed = 0;
+  } else if (!unicodeEnabled) {
+    return 1;
+  } else if (refreshUnicodeCache(characters)) {
+    return 1;
   }
 
-  return 1;
+  unicodeCacheUsed = 0;
+  return 0;
 }
 
 static int
 refresh_LinuxScreen (void) {
   if (screenUpdated) {
+    typedef enum {
+      REFRESH_NEEDED,
+      REFRESH_FAILED,
+      REFRESH_DONE
+    } RefreshState;
+
+    RefreshState refreshState = REFRESH_NEEDED;
+
     while (1) {
       problemText = NULL;
 
-      if (!refreshCache()) {
-        problemText = gettext("can't read screen content");
-        goto done;
-      }
-
       {
-        int consoleNumber = getConsoleNumber();
-        if (consoleNumber == currentConsoleNumber) break;
+        int newConsoleNumber = getConsoleNumber();
 
-        logMessage(LOG_CATEGORY(SCREEN_DRIVER),
-                   "console number changed: %u -> %u",
-                   currentConsoleNumber, consoleNumber);
+        if (newConsoleNumber != currentConsoleNumber) {
+          logMessage(LOG_CATEGORY(SCREEN_DRIVER),
+            "foreground console number changed: %d -> %d",
+            currentConsoleNumber, newConsoleNumber
+          );
 
-        currentConsoleNumber = consoleNumber;
+          if (refreshState != REFRESH_NEEDED) {
+            refreshState = REFRESH_NEEDED;
+
+            logMessage(LOG_WARNING,
+              "foreground console changed during cache refresh - retrying"
+            );
+          }
+
+          currentConsoleNumber = newConsoleNumber;
+        }
       }
-    }
 
-    inTextMode = testTextMode();
-    screenUpdated = 0;
+      if (currentConsoleNumber == NO_CONSOLE) {
+        problemText = gettext("no foreground console");
+      } else if (refreshState == REFRESH_DONE) {
+        screenUpdated = 0;
+      } else if (refreshState == REFRESH_FAILED) {
+        logMessage(LOG_WARNING, "cache refresh failed");
+        problemText = gettext("can't read screen content");
+      } else {
+        // refreshState == REFRESH_NEEDED
+        refreshState = refreshCache()? REFRESH_DONE: REFRESH_FAILED;
+        continue;
+      }
+
+      break;
+    }
 
-  done:
     if (problemText) {
       if (*fallbackText) {
         problemText = gettext(fallbackText);
@@ -1638,35 +2021,32 @@ refresh_LinuxScreen (void) {
 }
 
 static int
-getScreenDescription (ScreenDescription *description) {
+getScreenProperties (ScreenDescription *description) {
   ScreenHeader header;
+  if (!readScreenHeader(&header)) return 0;
 
-  if (readScreenHeader(&header)) {
-    description->cols = header.size.columns;
-    description->rows = header.size.rows;
-
-    description->posx = header.location.column;
-    description->posy = header.location.row;
+  description->cols = header.size.columns;
+  description->rows = header.size.rows;
 
-    adjustCursorColumn(&description->posx, description->posy, description->cols);
-    return 1;
-  }
+  description->posx = header.cursor.column;
+  description->posy = header.cursor.row;
+  if (header.hideCursor) description->hasCursor = 0;
 
-  problemText = gettext("can't read screen header");
-  return 0;
+  adjustCursorColumn(&description->posx, description->posy, description->cols);
+  return 1;
 }
 
 static void
 describe_LinuxScreen (ScreenDescription *description) {
-  if (!screenCacheBuffer) {
+  if (!screenCacheUsed) {
     problemText = NULL;
     currentConsoleNumber = getConsoleNumber();
-    inTextMode = testTextMode();
   }
 
-  if ((description->number = currentConsoleNumber)) {
+  if ((description->number = currentConsoleNumber) != NO_CONSOLE) {
     if (inTextMode) {
-      if (getScreenDescription(description)) {
+      if (!getScreenProperties(description)) {
+        problemText = gettext("can't get screen properties");
       }
     }
   }
@@ -1682,18 +2062,20 @@ describe_LinuxScreen (ScreenDescription *description) {
 
 static int
 readCharacters_LinuxScreen (const ScreenBox *box, ScreenCharacter *buffer) {
-  ScreenSize size;
+  ScreenHeader header;
+
+  if (readScreenHeader(&header)) {
+    const ScreenSize *size = &header.size;
 
-  if (readScreenSize(&size)) {
-    if (validateScreenBox(box, size.columns, size.rows)) {
+    if (validateScreenBox(box, size->columns, size->rows)) {
       if (problemText) {
         setScreenMessage(box, buffer, problemText);
         return 1;
       }
 
       for (unsigned int row=0; row<box->height; row+=1) {
-        ScreenCharacter characters[size.columns];
-        if (!readScreenRow(box->top+row, size.columns, characters, NULL)) return 0;
+        ScreenCharacter characters[size->columns];
+        if (!readScreenRow(box->top+row, size->columns, characters, NULL)) return 0;
 
         memcpy(buffer, &characters[box->left],
                (box->width * sizeof(characters[0])));
@@ -2335,6 +2717,30 @@ insertKey_LinuxScreen (ScreenKey key) {
   return ok;
 }
 
+static ScreenPasteMode
+getPasteMode_LinuxScreen (void) {
+  unsigned char subcode = TIOCL_GETBRACKETEDPASTE;
+  int result = controlCurrentConsole(TIOCLINUX, &subcode);
+
+  if (result > 0) return SPM_BRACKETED;
+  if (result == 0) return SPM_PLAIN;
+
+  if (result == -1) {
+    if (errno == EINVAL) {
+      static unsigned char alreadyLogged = 0;
+
+      logKernelLimitation(
+        &alreadyLogged, 6, 16,
+        "cannot determine current console bracketed paste state"
+      );
+    } else {
+      logSystemError("ioctl[TIOCLINUX(TIOCL_GETBRACKETEDPASTE)]");
+    }
+  }
+
+  return SPM_UNKNOWN;
+}
+
 typedef struct {
   char subcode;
   struct tiocl_selection selection;
@@ -2382,7 +2788,7 @@ unhighlightRegion_LinuxScreen (void) {
 }
 
 static int
-validateVt (int vt) {
+validateVirtualTerminalNumber (int vt) {
   if ((vt >= 1) && (vt <= MAX_NR_CONSOLES)) return 1;
   logMessage(LOG_WARNING, "virtual terminal out of range: %d", vt);
   return 0;
@@ -2390,14 +2796,14 @@ validateVt (int vt) {
 
 static int
 selectVirtualTerminal_LinuxScreen (int vt) {
-  if (vt == virtualTerminalNumber) return 1;
-  if (vt && !validateVt(vt)) return 0;
+  if (vt == selectedVirtualTerminal) return 1;
+  if (vt && !validateVirtualTerminalNumber(vt)) return 0;
   return setCurrentScreen(vt);
 }
 
 static int
 switchVirtualTerminal_LinuxScreen (int vt) {
-  if (validateVt(vt)) {
+  if (validateVirtualTerminalNumber(vt)) {
     if (selectVirtualTerminal_LinuxScreen(0)) {
       if (controlMainConsole(VT_ACTIVATE, (void *)(intptr_t)vt) != -1) {
         logMessage(LOG_CATEGORY(SCREEN_DRIVER),
@@ -2543,6 +2949,7 @@ scr_initialize (MainScreen *main) {
   main->base.describe = describe_LinuxScreen;
   main->base.readCharacters = readCharacters_LinuxScreen;
   main->base.insertKey = insertKey_LinuxScreen;
+  main->base.getPasteMode = getPasteMode_LinuxScreen;
   main->base.highlightRegion = highlightRegion_LinuxScreen;
   main->base.unhighlightRegion = unhighlightRegion_LinuxScreen;
   main->base.selectVirtualTerminal = selectVirtualTerminal_LinuxScreen;
diff --git a/Drivers/Screen/Linux/screen.h b/Drivers/Screen/Linux/screen.h
index ed008edaf..07828fd3d 100644
--- a/Drivers/Screen/Linux/screen.h
+++ b/Drivers/Screen/Linux/screen.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Screen/PcBios/Makefile.in b/Drivers/Screen/PcBios/Makefile.in
index e39ea962a..9f3fdc480 100644
--- a/Drivers/Screen/PcBios/Makefile.in
+++ b/Drivers/Screen/PcBios/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Screen/PcBios/screen.c b/Drivers/Screen/PcBios/screen.c
index 5150b2373..a263e954f 100644
--- a/Drivers/Screen/PcBios/screen.c
+++ b/Drivers/Screen/PcBios/screen.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Screen/Screen/Makefile.in b/Drivers/Screen/Screen/Makefile.in
index c43348533..3c2239b1b 100644
--- a/Drivers/Screen/Screen/Makefile.in
+++ b/Drivers/Screen/Screen/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Screen/Screen/screen.c b/Drivers/Screen/Screen/screen.c
index ef88e205c..c6c7d2d42 100644
--- a/Drivers/Screen/Screen/screen.c
+++ b/Drivers/Screen/Screen/screen.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Screen/Screen/screen.h b/Drivers/Screen/Screen/screen.h
index ed9563005..78e23be65 100644
--- a/Drivers/Screen/Screen/screen.h
+++ b/Drivers/Screen/Screen/screen.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Screen/Skeleton/Makefile.in b/Drivers/Screen/Skeleton/Makefile.in
index 8362ee19b..98ec7e00c 100644
--- a/Drivers/Screen/Skeleton/Makefile.in
+++ b/Drivers/Screen/Skeleton/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Screen/Skeleton/screen.c b/Drivers/Screen/Skeleton/screen.c
index 5ac018651..be2282f44 100644
--- a/Drivers/Screen/Skeleton/screen.c
+++ b/Drivers/Screen/Skeleton/screen.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Screen/TerminalEmulator/Makefile.in b/Drivers/Screen/TerminalEmulator/Makefile.in
index 9b49f4ea5..a3820935f 100644
--- a/Drivers/Screen/TerminalEmulator/Makefile.in
+++ b/Drivers/Screen/TerminalEmulator/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Screen/TerminalEmulator/em_screen.c b/Drivers/Screen/TerminalEmulator/em_screen.c
index c44cbdaac..ed74fba20 100644
--- a/Drivers/Screen/TerminalEmulator/em_screen.c
+++ b/Drivers/Screen/TerminalEmulator/em_screen.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -280,7 +280,7 @@ makeDefaultEmulatorPath (void) {
 
   static PathMaker *pathMakers[] = {
     makeProgramPath,
-    makeCommandPath,
+    makeHelperPath,
   };
 
   PathMaker **pathMaker = pathMakers;
diff --git a/Drivers/Screen/Windows/Makefile.in b/Drivers/Screen/Windows/Makefile.in
index 6526514c4..326e6b178 100644
--- a/Drivers/Screen/Windows/Makefile.in
+++ b/Drivers/Screen/Windows/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Screen/Windows/screen.c b/Drivers/Screen/Windows/screen.c
index 7b9701a15..1db831f98 100644
--- a/Drivers/Screen/Windows/screen.c
+++ b/Drivers/Screen/Windows/screen.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/Alva/Makefile.in b/Drivers/Speech/Alva/Makefile.in
index 728144556..e13334659 100644
--- a/Drivers/Speech/Alva/Makefile.in
+++ b/Drivers/Speech/Alva/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/Alva/speech.c b/Drivers/Speech/Alva/speech.c
index f4bd31b96..377ab29a1 100644
--- a/Drivers/Speech/Alva/speech.c
+++ b/Drivers/Speech/Alva/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/Alva/speech.h b/Drivers/Speech/Alva/speech.h
index 2320baaac..824a3bee5 100644
--- a/Drivers/Speech/Alva/speech.h
+++ b/Drivers/Speech/Alva/speech.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/Android/Makefile.in b/Drivers/Speech/Android/Makefile.in
index 1fe743675..baf7dfe60 100644
--- a/Drivers/Speech/Android/Makefile.in
+++ b/Drivers/Speech/Android/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/Android/speech.c b/Drivers/Speech/Android/speech.c
index 259982ea5..27ae1bf6d 100644
--- a/Drivers/Speech/Android/speech.c
+++ b/Drivers/Speech/Android/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/BrailleLite/Makefile.in b/Drivers/Speech/BrailleLite/Makefile.in
index 5175d75b7..155792ebb 100644
--- a/Drivers/Speech/BrailleLite/Makefile.in
+++ b/Drivers/Speech/BrailleLite/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/BrailleLite/speech.c b/Drivers/Speech/BrailleLite/speech.c
index 06a406cf4..b36c86a89 100644
--- a/Drivers/Speech/BrailleLite/speech.c
+++ b/Drivers/Speech/BrailleLite/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/BrailleLite/speech.h b/Drivers/Speech/BrailleLite/speech.h
index e609bd214..eaf05e339 100644
--- a/Drivers/Speech/BrailleLite/speech.h
+++ b/Drivers/Speech/BrailleLite/speech.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/CombiBraille/Makefile.in b/Drivers/Speech/CombiBraille/Makefile.in
index db362265c..110d1165d 100644
--- a/Drivers/Speech/CombiBraille/Makefile.in
+++ b/Drivers/Speech/CombiBraille/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/CombiBraille/speech.c b/Drivers/Speech/CombiBraille/speech.c
index a48e25212..77d3037f5 100644
--- a/Drivers/Speech/CombiBraille/speech.c
+++ b/Drivers/Speech/CombiBraille/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/CombiBraille/speech.h b/Drivers/Speech/CombiBraille/speech.h
index a9b84d488..3d98a77f8 100644
--- a/Drivers/Speech/CombiBraille/speech.h
+++ b/Drivers/Speech/CombiBraille/speech.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/ExternalSpeech/Makefile.in b/Drivers/Speech/ExternalSpeech/Makefile.in
index 00e3d40af..7e02dbc10 100644
--- a/Drivers/Speech/ExternalSpeech/Makefile.in
+++ b/Drivers/Speech/ExternalSpeech/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/ExternalSpeech/README b/Drivers/Speech/ExternalSpeech/README
index d6289d5c4..c8d606b3b 100644
--- a/Drivers/Speech/ExternalSpeech/README
+++ b/Drivers/Speech/ExternalSpeech/README
@@ -1,5 +1,5 @@
 ExternalSpeech
-by Stphane Doyon <s.doyon@videotron.ca>
+by Stéphane Doyon <s.doyon@videotron.ca>
 Version 0.7 beta, September 2001
 
 This speech driver interfaces with an external program that will handle
diff --git a/Drivers/Speech/ExternalSpeech/speech.c b/Drivers/Speech/ExternalSpeech/speech.c
index b1916d0ea..7731d74bb 100644
--- a/Drivers/Speech/ExternalSpeech/speech.c
+++ b/Drivers/Speech/ExternalSpeech/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -18,7 +18,7 @@
 
 /* ExternalSpeech/speech.c - Speech library (driver)
  * For external programs, using my own protocol. Features indexing.
- * Stphane Doyon <s.doyon@videotron.ca>
+ * Stéphane Doyon <s.doyon@videotron.ca>
  */
 
 #include "prologue.h"
@@ -46,6 +46,12 @@ static const char *socketPath = NULL;
 static struct sockaddr_un socketAddress;
 static int socketDescriptor = -1;
 
+static int sendSettings (SpeechSynthesizer *spk);
+static unsigned char volumePercentage;
+static float rateMultiplier;
+static float pitchMultiplier;
+static unsigned char punctuationLevel;
+
 static uint16_t totalCharacterCount;
 #define TRACK_DATA_SIZE 2
 static AsyncHandle trackHandle = NULL;
@@ -95,7 +101,8 @@ connectToServer (SpeechSynthesizer *spk) {
           if (asyncReadSocket(&trackHandle, sd, TRACK_DATA_SIZE, xsHandleSpeechTrackingInput, spk)) {
             logMessage(LOG_CATEGORY(SPEECH_DRIVER), "connected to server: fd=%d", sd);
             socketDescriptor = sd;
-            return 1;
+            sendSettings(spk);
+            return amConnected();
           }
         }
       } else {
@@ -170,50 +177,15 @@ sendPacket (SpeechSynthesizer *spk, const unsigned char *packet, size_t length)
   return 1;
 }
 
-static void
-spk_say (SpeechSynthesizer *spk, const unsigned char *text, size_t length, size_t count, const unsigned char *attributes) {
-  if (!attributes) count = 0;
-
-  unsigned char packet[5 + length + count];
-  unsigned char *p = packet;
-
-  *p++ = 4;
-  *p++ = length >> 8;
-  *p++ = length & 0XFF;
-  *p++ = count >> 8;
-  *p++ = count & 0XFF;
-  p = mempcpy(p, text, length);
-  p = mempcpy(p, attributes, count);
-
-  if (sendPacket(spk, packet, (p - packet))) {
-    totalCharacterCount = count;
-  }
-}
-
-static void
-spk_mute (SpeechSynthesizer *spk) {
-  logMessage(LOG_CATEGORY(SPEECH_DRIVER), "mute");
-
-  unsigned char packet[] = {1};
-  sendPacket(spk, packet, sizeof(packet));
-}
-
-static void
-spk_setVolume (SpeechSynthesizer *spk, unsigned char setting) {
-  unsigned char percentage = getIntegerSpeechVolume(setting, 100);
-
-  logMessage(
-    LOG_CATEGORY(SPEECH_DRIVER),
-    "set volume to %u (%u%%)",
-    setting, percentage
-  );
+static int
+sendByteSetting (SpeechSynthesizer *spk, unsigned char code, unsigned char value) {
+  unsigned char packet[2] = {code, value};
 
-  unsigned char packet[] = {2, percentage};
-  sendPacket(spk, packet, sizeof(packet));
+  return sendPacket(spk, packet, sizeof(packet));
 }
 
 static int
-sendFloatSetting (SpeechSynthesizer *spk, unsigned char code, float value) {
+sendMultplierSetting (SpeechSynthesizer *spk, unsigned char code, float value) {
   unsigned char packet[5] = {code};
   const unsigned char *v = (const unsigned char *)&value;
 
@@ -232,30 +204,128 @@ sendFloatSetting (SpeechSynthesizer *spk, unsigned char code, float value) {
   return sendPacket(spk, packet, sizeof(packet));
 }
 
+static int
+sendVolumePercentage (SpeechSynthesizer *spk) {
+  return sendByteSetting(spk, 2, volumePercentage);
+}
+
+static int
+sendRateMultiplier (SpeechSynthesizer *spk) {
+  return sendMultplierSetting(spk, 3, (1.0 / rateMultiplier));
+}
+
+static int
+sendPitchMultiplier (SpeechSynthesizer *spk) {
+  return sendMultplierSetting(spk, 5, pitchMultiplier);
+}
+
+static int
+sendPunctuationLevel (SpeechSynthesizer *spk) {
+  return sendByteSetting(spk, 6, punctuationLevel);
+}
+
+static int
+sendSettings (SpeechSynthesizer *spk) {
+  typedef int SendSettingHandler (SpeechSynthesizer *spk);
+
+  static SendSettingHandler *const handlers[] = {
+    sendVolumePercentage,
+    sendRateMultiplier,
+    sendPitchMultiplier,
+    sendPunctuationLevel,
+    NULL
+  };
+
+  {
+    SendSettingHandler *const *handler = handlers;
+
+    while (*handler) {
+      if (!(*handler)(spk)) return 0;
+      handler += 1;
+    }
+  }
+
+  return 1;
+}
+
+static void
+spk_setVolume (SpeechSynthesizer *spk, unsigned char setting) {
+  volumePercentage = getIntegerSpeechVolume(setting, 100);
+
+  logMessage(
+    LOG_CATEGORY(SPEECH_DRIVER),
+    "set volume to %u (%u%%)",
+    setting, volumePercentage
+  );
+
+  sendVolumePercentage(spk);
+}
+
 static void
 spk_setRate (SpeechSynthesizer *spk, unsigned char setting) {
-  float stretch = 1.0 / getFloatSpeechRate(setting); 
+  rateMultiplier = getFloatSpeechRate(setting); 
 
   logMessage(
     LOG_CATEGORY(SPEECH_DRIVER),
-    "set rate to %u (time scale %f)",
-    setting, stretch
+    "set rate to %u (multiplier %f)",
+    setting, rateMultiplier
   );
 
-  sendFloatSetting(spk, 3, stretch);
+  sendRateMultiplier(spk);
 }
 
 static void
 spk_setPitch (SpeechSynthesizer *spk, unsigned char setting) {
-  float multiplier = getFloatSpeechPitch(setting); 
+  pitchMultiplier = getFloatSpeechPitch(setting); 
 
   logMessage(
     LOG_CATEGORY(SPEECH_DRIVER),
     "set pitch to %u (multiplier %f)",
-    setting, multiplier
+    setting, pitchMultiplier
   );
 
-  sendFloatSetting(spk, 5, multiplier);
+  sendPitchMultiplier(spk);
+}
+
+static void
+spk_setPunctuation (SpeechSynthesizer *spk, SpeechPunctuation setting) {
+  punctuationLevel = setting;
+
+  logMessage(
+    LOG_CATEGORY(SPEECH_DRIVER),
+    "set punctuation to %u",
+    setting
+  );
+
+  sendPunctuationLevel(spk);
+}
+
+static void
+spk_mute (SpeechSynthesizer *spk) {
+  logMessage(LOG_CATEGORY(SPEECH_DRIVER), "mute");
+
+  unsigned char packet[] = {1};
+  sendPacket(spk, packet, sizeof(packet));
+}
+
+static void
+spk_say (SpeechSynthesizer *spk, const unsigned char *text, size_t length, size_t count, const unsigned char *attributes) {
+  if (!attributes) count = 0;
+
+  unsigned char packet[5 + length + count];
+  unsigned char *p = packet;
+
+  *p++ = 4;
+  *p++ = length >> 8;
+  *p++ = length & 0XFF;
+  *p++ = count >> 8;
+  *p++ = count & 0XFF;
+  p = mempcpy(p, text, length);
+  p = mempcpy(p, attributes, count);
+
+  if (sendPacket(spk, packet, (p - packet))) {
+    totalCharacterCount = count;
+  }
 }
 
 static int
@@ -263,6 +333,12 @@ spk_construct (SpeechSynthesizer *spk, char **parameters) {
   spk->setVolume = spk_setVolume;
   spk->setRate = spk_setRate;
   spk->setPitch = spk_setPitch;
+  spk->setPunctuation = spk_setPunctuation;
+
+  volumePercentage = 100;
+  rateMultiplier = 1.0;
+  pitchMultiplier = 1.0;
+  punctuationLevel = 0;
 
   socketPath = parameters[PARM_SOCKET_PATH];
   if (!socketPath || !*socketPath) socketPath = XS_DEFAULT_SOCKET_PATH;
diff --git a/Drivers/Speech/ExternalSpeech/speech.h b/Drivers/Speech/ExternalSpeech/speech.h
index 69e7dc26c..474933bd1 100644
--- a/Drivers/Speech/ExternalSpeech/speech.h
+++ b/Drivers/Speech/ExternalSpeech/speech.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/Festival/Makefile.in b/Drivers/Speech/Festival/Makefile.in
index cb64a0d9d..529afbee2 100644
--- a/Drivers/Speech/Festival/Makefile.in
+++ b/Drivers/Speech/Festival/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/Festival/speech.c b/Drivers/Speech/Festival/speech.c
index fd8e77571..cb8034ba6 100644
--- a/Drivers/Speech/Festival/speech.c
+++ b/Drivers/Speech/Festival/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/Festival/speech.h b/Drivers/Speech/Festival/speech.h
index ab5022de6..8c70fe3a1 100644
--- a/Drivers/Speech/Festival/speech.h
+++ b/Drivers/Speech/Festival/speech.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/FestivalLite/Makefile.in b/Drivers/Speech/FestivalLite/Makefile.in
index 6be4fb47d..06689b31b 100644
--- a/Drivers/Speech/FestivalLite/Makefile.in
+++ b/Drivers/Speech/FestivalLite/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/FestivalLite/speech.c b/Drivers/Speech/FestivalLite/speech.c
index 93ff9d5aa..378476d4e 100644
--- a/Drivers/Speech/FestivalLite/speech.c
+++ b/Drivers/Speech/FestivalLite/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/GenericSay/Makefile.in b/Drivers/Speech/GenericSay/Makefile.in
index dd2570dab..278732af1 100644
--- a/Drivers/Speech/GenericSay/Makefile.in
+++ b/Drivers/Speech/GenericSay/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/GenericSay/commands/AccentSA b/Drivers/Speech/GenericSay/commands/AccentSA
index b6e692065..40f1e0d88 100755
--- a/Drivers/Speech/GenericSay/commands/AccentSA
+++ b/Drivers/Speech/GenericSay/commands/AccentSA
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/GenericSay/commands/say b/Drivers/Speech/GenericSay/commands/say
index 92ae26a63..5260c85e4 100755
--- a/Drivers/Speech/GenericSay/commands/say
+++ b/Drivers/Speech/GenericSay/commands/say
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/GenericSay/speech.c b/Drivers/Speech/GenericSay/speech.c
index cf463bebf..0c2c46495 100644
--- a/Drivers/Speech/GenericSay/speech.c
+++ b/Drivers/Speech/GenericSay/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/GenericSay/speech.h b/Drivers/Speech/GenericSay/speech.h
index 9ccf9fb1a..731e2cdff 100644
--- a/Drivers/Speech/GenericSay/speech.h
+++ b/Drivers/Speech/GenericSay/speech.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/Mikropuhe/Makefile.in b/Drivers/Speech/Mikropuhe/Makefile.in
index 1f33c8ab1..725f4ffae 100644
--- a/Drivers/Speech/Mikropuhe/Makefile.in
+++ b/Drivers/Speech/Mikropuhe/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/Mikropuhe/speech.c b/Drivers/Speech/Mikropuhe/speech.c
index 9ce460c72..8fabb2496 100644
--- a/Drivers/Speech/Mikropuhe/speech.c
+++ b/Drivers/Speech/Mikropuhe/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/MultiBraille/Makefile.in b/Drivers/Speech/MultiBraille/Makefile.in
index 02a177cda..236764d1e 100644
--- a/Drivers/Speech/MultiBraille/Makefile.in
+++ b/Drivers/Speech/MultiBraille/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/MultiBraille/speech.c b/Drivers/Speech/MultiBraille/speech.c
index 3a5bb92fa..0a0ca1498 100644
--- a/Drivers/Speech/MultiBraille/speech.c
+++ b/Drivers/Speech/MultiBraille/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/MultiBraille/speech.h b/Drivers/Speech/MultiBraille/speech.h
index 978957ce4..709472a60 100644
--- a/Drivers/Speech/MultiBraille/speech.h
+++ b/Drivers/Speech/MultiBraille/speech.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/Skeleton/Makefile.in b/Drivers/Speech/Skeleton/Makefile.in
index 0f53f10e0..9e7ae189c 100644
--- a/Drivers/Speech/Skeleton/Makefile.in
+++ b/Drivers/Speech/Skeleton/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/Skeleton/speech.c b/Drivers/Speech/Skeleton/speech.c
index 52c52656c..d3b0bd7e5 100644
--- a/Drivers/Speech/Skeleton/speech.c
+++ b/Drivers/Speech/Skeleton/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/SpeechDispatcher/Makefile.in b/Drivers/Speech/SpeechDispatcher/Makefile.in
index 4ba2574e6..dfb288f2a 100644
--- a/Drivers/Speech/SpeechDispatcher/Makefile.in
+++ b/Drivers/Speech/SpeechDispatcher/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/SpeechDispatcher/README b/Drivers/Speech/SpeechDispatcher/README
index dab227565..d765759cd 100644
--- a/Drivers/Speech/SpeechDispatcher/README
+++ b/Drivers/Speech/SpeechDispatcher/README
@@ -18,7 +18,8 @@ search paths for their internal dependencies.
 This driver recognizes the following parameters:
 
    Parameter Settings
-   port      1-65535
+   address   address of speech-dispatcher's server
+   autospawn yes,no
    module    name (flite, festival, epos-generic, dtk-generic, ...)
    language  two-letter language code
    voice     type (male1, female1, male2, female2, male3, female3,
diff --git a/Drivers/Speech/SpeechDispatcher/speech.c b/Drivers/Speech/SpeechDispatcher/speech.c
index 21ad37674..2e2d74840 100644
--- a/Drivers/Speech/SpeechDispatcher/speech.c
+++ b/Drivers/Speech/SpeechDispatcher/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -25,19 +25,21 @@
 #include "parse.h"
 
 typedef enum {
-  PARM_PORT,
+  PARM_ADDRESS,
+  PARM_AUTOSPAWN,
   PARM_MODULE,
   PARM_LANGUAGE,
   PARM_VOICE,
   PARM_NAME
 } DriverParameter;
-#define SPKPARMS "port", "module", "language", "voice", "name"
+#define SPKPARMS "address", "autospawn", "module", "language", "voice", "name"
 
 #include "spk_driver.h"
 
 #include <libspeechd.h>
 
 static SPDConnection *connectionHandle = NULL;
+static unsigned int autospawn;
 static const char *moduleName;
 static const char *languageName;
 static SPDVoiceType voiceType;
@@ -45,10 +47,11 @@ static const char *voiceName;
 static signed int relativeVolume;
 static signed int relativeRate;
 static signed int relativePitch;
-static SPDPunctuation punctuationVerbosity;
+static SPDPunctuation punctuationLevel;
 
 static void
 clearSettings (void) {
+  autospawn = 1;
   moduleName = NULL;
   languageName = NULL;
   voiceType = -1;
@@ -56,7 +59,7 @@ clearSettings (void) {
   relativeVolume = 0;
   relativeRate = 0;
   relativePitch = 0;
-  punctuationVerbosity = -1;
+  punctuationLevel = -1;
 }
 
 static void
@@ -135,16 +138,19 @@ spk_setPitch (SpeechSynthesizer *spk, unsigned char setting) {
 
 static void
 setPunctuation (const void *data) {
-  if (punctuationVerbosity != -1) spd_set_punctuation(connectionHandle, punctuationVerbosity);
+  if (punctuationLevel != -1) spd_set_punctuation(connectionHandle, punctuationLevel);
 }
 
 static void
 spk_setPunctuation (SpeechSynthesizer *spk, SpeechPunctuation setting) {
-  punctuationVerbosity = (setting <= SPK_PUNCTUATION_NONE)? SPD_PUNCT_NONE: 
-                         (setting >= SPK_PUNCTUATION_ALL)? SPD_PUNCT_ALL: 
-                         SPD_PUNCT_SOME;
+  punctuationLevel = (setting <= SPK_PUNCTUATION_NONE)? SPD_PUNCT_NONE: 
+                     (setting >= SPK_PUNCTUATION_ALL)? SPD_PUNCT_ALL: 
+                     (setting == SPK_PUNCTUATION_SOME)? SPD_PUNCT_SOME:
+                     (setting == SPK_PUNCTUATION_MOST)? SPD_PUNCT_MOST:
+                     -1;
+
   speechdAction(setPunctuation, NULL);
-  logMessage(LOG_DEBUG, "set punctuation: %u -> %d", setting, punctuationVerbosity);
+  logMessage(LOG_DEBUG, "set punctuation: %u -> %d", setting, punctuationLevel);
 }
 
 static void
@@ -155,8 +161,10 @@ cancelSpeech (const void *data) {
 static int
 openConnection (void) {
   if (!connectionHandle) {
-    if (!(connectionHandle = spd_open("brltty", "main", NULL, SPD_MODE_THREADED))) {
-      logMessage(LOG_ERR, "speech dispatcher open failure");
+    char **error_message = NULL;
+    if (!(connectionHandle = spd_open2("brltty", "main", NULL, SPD_MODE_THREADED, NULL, autospawn, error_message))) {
+      logMessage(LOG_ERR, "speech dispatcher open failure: %s",*error_message);
+      free(*error_message);
       return 0;
     }
 
@@ -189,17 +197,15 @@ spk_construct (SpeechSynthesizer *spk, char **parameters) {
 
   clearSettings();
 
-  if (parameters[PARM_PORT] && *parameters[PARM_PORT]) {
-    static const int minimumPort = 0X1;
-    static const int maximumPort = 0XFFFF;
-    int port = 0;
+  if (parameters[PARM_ADDRESS] && *parameters[PARM_ADDRESS]) {
+    setenv("SPEECHD_ADDRESS", parameters[PARM_ADDRESS], 0);
+  }
 
-    if (validateInteger(&port, parameters[PARM_PORT], &minimumPort, &maximumPort)) {
-      char number[0X10];
-      snprintf(number, sizeof(number), "%d", port);
-      setenv("SPEECHD_PORT", number, 1);
-    } else {
-      logMessage(LOG_WARNING, "%s: %s", "invalid port number", parameters[PARM_PORT]);
+  if (parameters[PARM_AUTOSPAWN] && *parameters[PARM_AUTOSPAWN]) {
+    if (!validateYesNo(&autospawn, parameters[PARM_AUTOSPAWN])) {
+      logMessage(LOG_WARNING, "%s: %s",
+        "invalid value for the autospawn parameter",
+        parameters[PARM_AUTOSPAWN]);
     }
   }
 
diff --git a/Drivers/Speech/Swift/Makefile.in b/Drivers/Speech/Swift/Makefile.in
index d9e2f954a..a559a7b81 100644
--- a/Drivers/Speech/Swift/Makefile.in
+++ b/Drivers/Speech/Swift/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/Swift/speech.c b/Drivers/Speech/Swift/speech.c
index 17946b1af..97bb43066 100644
--- a/Drivers/Speech/Swift/speech.c
+++ b/Drivers/Speech/Swift/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/Theta/Makefile.in b/Drivers/Speech/Theta/Makefile.in
index 45742bb5e..542b92b83 100644
--- a/Drivers/Speech/Theta/Makefile.in
+++ b/Drivers/Speech/Theta/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/Theta/speech.c b/Drivers/Speech/Theta/speech.c
index 560ec609d..a49e0a1a4 100644
--- a/Drivers/Speech/Theta/speech.c
+++ b/Drivers/Speech/Theta/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/ViaVoice/Makefile.in b/Drivers/Speech/ViaVoice/Makefile.in
index 1d3de700b..ee0f56361 100644
--- a/Drivers/Speech/ViaVoice/Makefile.in
+++ b/Drivers/Speech/ViaVoice/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/ViaVoice/languages.h b/Drivers/Speech/ViaVoice/languages.h
index 308bf94e4..3170b1342 100644
--- a/Drivers/Speech/ViaVoice/languages.h
+++ b/Drivers/Speech/ViaVoice/languages.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/ViaVoice/speech.c b/Drivers/Speech/ViaVoice/speech.c
index 20ca98926..4be22fc01 100644
--- a/Drivers/Speech/ViaVoice/speech.c
+++ b/Drivers/Speech/ViaVoice/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/ViaVoice/voices.h b/Drivers/Speech/ViaVoice/voices.h
index a57a7d9b9..269e08912 100644
--- a/Drivers/Speech/ViaVoice/voices.h
+++ b/Drivers/Speech/ViaVoice/voices.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Drivers/Speech/eSpeak-NG/Makefile.in b/Drivers/Speech/eSpeak-NG/Makefile.in
index 2020fb6da..159a4bd00 100644
--- a/Drivers/Speech/eSpeak-NG/Makefile.in
+++ b/Drivers/Speech/eSpeak-NG/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/eSpeak-NG/speech.c b/Drivers/Speech/eSpeak-NG/speech.c
index 1c566aa1c..1c809b10b 100644
--- a/Drivers/Speech/eSpeak-NG/speech.c
+++ b/Drivers/Speech/eSpeak-NG/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -103,12 +103,14 @@ static void
 spk_setPunctuation(SpeechSynthesizer *spk, SpeechPunctuation setting)
 {
 	espeak_PUNCT_TYPE punct;
+
 	if (setting <= SPK_PUNCTUATION_NONE)
 		punct = espeakPUNCT_NONE;
-	else if (setting >= SPK_PUNCTUATION_ALL)
-		punct = espeakPUNCT_ALL;
-	else
+	else if (setting == SPK_PUNCTUATION_SOME)
 		punct = espeakPUNCT_SOME;
+	else
+		punct = espeakPUNCT_ALL;
+
 	espeak_SetParameter(espeakPUNCTUATION, punct, 0);
 }
 
diff --git a/Drivers/Speech/eSpeak/Makefile.in b/Drivers/Speech/eSpeak/Makefile.in
index fd6576d7c..595c2809b 100644
--- a/Drivers/Speech/eSpeak/Makefile.in
+++ b/Drivers/Speech/eSpeak/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Drivers/Speech/eSpeak/speech.c b/Drivers/Speech/eSpeak/speech.c
index ea0345c8e..7fcd2a781 100644
--- a/Drivers/Speech/eSpeak/speech.c
+++ b/Drivers/Speech/eSpeak/speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -108,12 +108,14 @@ static void
 spk_setPunctuation(SpeechSynthesizer *spk, SpeechPunctuation setting)
 {
 	espeak_PUNCT_TYPE punct;
+
 	if (setting <= SPK_PUNCTUATION_NONE)
 		punct = espeakPUNCT_NONE;
-	else if (setting >= SPK_PUNCTUATION_ALL)
-		punct = espeakPUNCT_ALL;
-	else
+	else if (setting == SPK_PUNCTUATION_SOME)
 		punct = espeakPUNCT_SOME;
+	else
+		punct = espeakPUNCT_ALL;
+
 	espeak_SetParameter(espeakPUNCTUATION, punct, 0);
 }
 
diff --git a/Headers/addresses.h b/Headers/addresses.h
index eb8ca969c..9f940ff7e 100644
--- a/Headers/addresses.h
+++ b/Headers/addresses.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/alert.h b/Headers/alert.h
index f159568fa..3841886c2 100644
--- a/Headers/alert.h
+++ b/Headers/alert.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/ascii.h b/Headers/ascii.h
index 42112819e..cf4ed5dc2 100644
--- a/Headers/ascii.h
+++ b/Headers/ascii.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/async_alarm.h b/Headers/async_alarm.h
index 644a57fc5..816791c60 100644
--- a/Headers/async_alarm.h
+++ b/Headers/async_alarm.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/async_event.h b/Headers/async_event.h
index 6bd30d6ec..a3ec9ea31 100644
--- a/Headers/async_event.h
+++ b/Headers/async_event.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/async_handle.h b/Headers/async_handle.h
index 4cb161a8f..01a879f56 100644
--- a/Headers/async_handle.h
+++ b/Headers/async_handle.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/async_io.h b/Headers/async_io.h
index d261ed242..3ea606661 100644
--- a/Headers/async_io.h
+++ b/Headers/async_io.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/async_signal.h b/Headers/async_signal.h
index 071a35d15..6eb3a987e 100644
--- a/Headers/async_signal.h
+++ b/Headers/async_signal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/async_task.h b/Headers/async_task.h
index cec6713d9..d81eb9b41 100644
--- a/Headers/async_task.h
+++ b/Headers/async_task.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/async_types_alarm.h b/Headers/async_types_alarm.h
index d3e4a31dd..c45fced51 100644
--- a/Headers/async_types_alarm.h
+++ b/Headers/async_types_alarm.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/async_types_event.h b/Headers/async_types_event.h
index 32a3bfea3..f6c7c4fa9 100644
--- a/Headers/async_types_event.h
+++ b/Headers/async_types_event.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/async_types_handle.h b/Headers/async_types_handle.h
index 9efc31266..9337194e7 100644
--- a/Headers/async_types_handle.h
+++ b/Headers/async_types_handle.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/async_types_io.h b/Headers/async_types_io.h
index 813cd273d..b0d82f871 100644
--- a/Headers/async_types_io.h
+++ b/Headers/async_types_io.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/async_types_task.h b/Headers/async_types_task.h
index e5ae2815e..1c22a8d44 100644
--- a/Headers/async_types_task.h
+++ b/Headers/async_types_task.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/async_types_wait.h b/Headers/async_types_wait.h
index 3c97d1bed..d0f281ef0 100644
--- a/Headers/async_types_wait.h
+++ b/Headers/async_types_wait.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/async_wait.h b/Headers/async_wait.h
index 7c3c33bc9..94b4de0b4 100644
--- a/Headers/async_wait.h
+++ b/Headers/async_wait.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/atb.h b/Headers/atb.h
index 6e2a5e592..83ad9cd6d 100644
--- a/Headers/atb.h
+++ b/Headers/atb.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/auth.h b/Headers/auth.h
index 62199a056..3df6b4203 100644
--- a/Headers/auth.h
+++ b/Headers/auth.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/beep.h b/Headers/beep.h
index 2321684e0..68db2c29a 100644
--- a/Headers/beep.h
+++ b/Headers/beep.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/bell.h b/Headers/bell.h
index 6a1f4417f..7bd0ca791 100644
--- a/Headers/bell.h
+++ b/Headers/bell.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/bitfield.h b/Headers/bitfield.h
index 7a1c0c1d5..9440a9663 100644
--- a/Headers/bitfield.h
+++ b/Headers/bitfield.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/bitmask.h b/Headers/bitmask.h
index 337df7b4d..33b292000 100644
--- a/Headers/bitmask.h
+++ b/Headers/bitmask.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/brl_base.h b/Headers/brl_base.h
index ea93ad3ed..d19966b1e 100644
--- a/Headers/brl_base.h
+++ b/Headers/brl_base.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/brl_cmds.h b/Headers/brl_cmds.h
index 44c04f261..a48188fed 100644
--- a/Headers/brl_cmds.h
+++ b/Headers/brl_cmds.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -165,7 +165,7 @@ typedef enum {
   
   /* miscellaneous */
   BRL_CMD_CSRJMP_VERT /* bring screen cursor to current line */,
-  BRL_CMD_PASTE /* insert clipboard text after screen cursor */,
+  BRL_CMD_PASTE /* insert the clipboard content before the screen cursor */,
   BRL_CMD_RESTARTBRL /* restart braille driver */,
   BRL_CMD_RESTARTSPEECH /* restart speech driver */,
 
@@ -240,7 +240,7 @@ typedef enum {
   BRL_CMD_TXTSEL_ALL /* select all of the text */,
   BRL_CMD_HOST_COPY /* copy selected text to host clipboard */,
   BRL_CMD_HOST_CUT /* cut selected text to host clipboard */,
-  BRL_CMD_HOST_PASTE /* insert host clipboard text after screen cursor */,
+  BRL_CMD_HOST_PASTE /* insert the host clipboard text before the screen cursor */,
 
   BRL_CMD_GUI_TITLE /* show the window title */,
   BRL_CMD_GUI_BRL_ACTIONS /* open the braille actions window */,
@@ -270,6 +270,8 @@ typedef enum {
 
   BRL_CMD_PREFRESET /* reset preferences to defaults */,
   BRL_CMD_ASPK_EMP_LINE /* set autospeak empty line on/off */,
+  BRL_CMD_SPK_PUNCT_LEVEL /* cycle speech punctuation level */,
+  BRL_CMD_PASTE_ALTMODE /* insert the clipboard content before the screen cursor using the alternate paste mode */,
 
   BRL_basicCommandCount /* must be last */
 } BRL_BasicCommand;
@@ -297,7 +299,7 @@ typedef enum {
   BRL_BLK_NXDIFCHAR /* go down to nearest line with different character */,
   BRL_BLK_CLIP_COPY /* copy characters to clipboard */,
   BRL_BLK_CLIP_APPEND /* append characters to clipboard */,
-  BRL_BLK_PASTE_HISTORY /* insert clipboard history entry after screen cursor */,
+  BRL_BLK_PASTE_HISTORY /* insert a clipboard history entry before the screen cursor */,
   BRL_BLK_SET_TEXT_TABLE /* set text table */,
   BRL_BLK_SET_ATTRIBUTES_TABLE /* set attributes table */,
   BRL_BLK_SET_CONTRACTION_TABLE /* set contraction table */,
@@ -308,7 +310,7 @@ typedef enum {
   BRL_BLK_TXTSEL_START /* start text selection */,
   BRL_BLK_TXTSEL_SET /* set text selection */,
   BRL_BLK_ROUTE_SPEECH /* bring speech cursor to character */,
-  BRL_BLK_1D /* (reserved) */,
+  BRL_BLK_PASTE_HISTORY_ALTMODE /* insert a clipboard history entry before the screen cursor using the alternate paste mode */,
   BRL_BLK_SELECTVT /* bind to specific virtual terminal */,
   BRL_BLK_ALERT /* render an alert */,
   BRL_BLK_PASSKEY /* (emulate special key) */,
diff --git a/Headers/brl_custom.h b/Headers/brl_custom.h
index 5cf020a9d..65192012b 100644
--- a/Headers/brl_custom.h
+++ b/Headers/brl_custom.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/brl_dots.h b/Headers/brl_dots.h
index bef2fafd6..8fe11edd4 100644
--- a/Headers/brl_dots.h
+++ b/Headers/brl_dots.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/brl_driver.h b/Headers/brl_driver.h
index 32c10dbaf..46acaa560 100644
--- a/Headers/brl_driver.h
+++ b/Headers/brl_driver.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/brl_types.h b/Headers/brl_types.h
index d03197281..e45292dc6 100644
--- a/Headers/brl_types.h
+++ b/Headers/brl_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/brl_utils.h b/Headers/brl_utils.h
index 4be20d559..9eb37d475 100644
--- a/Headers/brl_utils.h
+++ b/Headers/brl_utils.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/charset.h b/Headers/charset.h
index efff66370..f11112193 100644
--- a/Headers/charset.h
+++ b/Headers/charset.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/cldr.h b/Headers/cldr.h
index bae7669d2..8d2cccdf8 100644
--- a/Headers/cldr.h
+++ b/Headers/cldr.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/clipboard.h b/Headers/clipboard.h
index d4c96924d..a1e147ad8 100644
--- a/Headers/clipboard.h
+++ b/Headers/clipboard.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -34,6 +34,11 @@ extern int truncateClipboardContent (ClipboardObject *cpb, size_t length);
 extern int setClipboardContent (ClipboardObject *cpb, const wchar_t *characters, size_t length);
 extern int appendClipboardContent (ClipboardObject *cpb, const wchar_t *characters, size_t length);
 
+extern int copyClipboardContent (
+  ClipboardObject *cpb, const wchar_t *characters, size_t length,
+  size_t offset, int insertCR
+);
+
 extern int setClipboardContentUTF8 (ClipboardObject *cpb, const char *text);
 extern int appendClipboardContentUTF8 (ClipboardObject *cpb, const char *text);
 
diff --git a/Headers/cmd.h b/Headers/cmd.h
index 40ad11f78..bb52bd772 100644
--- a/Headers/cmd.h
+++ b/Headers/cmd.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/cmd_enqueue.h b/Headers/cmd_enqueue.h
index ab34a332d..c450acd36 100644
--- a/Headers/cmd_enqueue.h
+++ b/Headers/cmd_enqueue.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/cmd_types.h b/Headers/cmd_types.h
index d8fdb805f..49bf0ffaa 100644
--- a/Headers/cmd_types.h
+++ b/Headers/cmd_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/cmdline.h b/Headers/cmdline.h
index 828dddde2..56ce52d58 100644
--- a/Headers/cmdline.h
+++ b/Headers/cmdline.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/cmdline_types.h b/Headers/cmdline_types.h
index 964421eeb..76e093d2a 100644
--- a/Headers/cmdline_types.h
+++ b/Headers/cmdline_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/common_java.h b/Headers/common_java.h
index b14f5e711..3742d7212 100644
--- a/Headers/common_java.h
+++ b/Headers/common_java.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/crc.h b/Headers/crc.h
index ca315e6e5..b46b49615 100644
--- a/Headers/crc.h
+++ b/Headers/crc.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/crc_algorithms.h b/Headers/crc_algorithms.h
index 58ec81cec..7ba458f9d 100644
--- a/Headers/crc_algorithms.h
+++ b/Headers/crc_algorithms.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/crc_definitions.h b/Headers/crc_definitions.h
index 71051559e..4e48ca1ab 100644
--- a/Headers/crc_definitions.h
+++ b/Headers/crc_definitions.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/crc_generate.h b/Headers/crc_generate.h
index 14d1444f5..45b2a59b6 100644
--- a/Headers/crc_generate.h
+++ b/Headers/crc_generate.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/crc_properties.h b/Headers/crc_properties.h
index ba49b4d17..d8e6c32d8 100644
--- a/Headers/crc_properties.h
+++ b/Headers/crc_properties.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/crc_verify.h b/Headers/crc_verify.h
index 8a9c9a1ea..ec9731477 100644
--- a/Headers/crc_verify.h
+++ b/Headers/crc_verify.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/ctb.h b/Headers/ctb.h
index eb866297d..505a43eb1 100644
--- a/Headers/ctb.h
+++ b/Headers/ctb.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -51,6 +51,8 @@ extern void contractText (
   int cursorOffset /* Position of coursor in source */
 );
 
+extern int *makeInverseOffsetMap (const int *fromOffsets, int fromCount);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
diff --git a/Headers/ctb_types.h b/Headers/ctb_types.h
index 7382639b7..9fbc09232 100644
--- a/Headers/ctb_types.h
+++ b/Headers/ctb_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/dataarea.h b/Headers/dataarea.h
index c15aca369..5b0aca18c 100644
--- a/Headers/dataarea.h
+++ b/Headers/dataarea.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/datafile.h b/Headers/datafile.h
index aee9f43e6..c935895f9 100644
--- a/Headers/datafile.h
+++ b/Headers/datafile.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/device.h b/Headers/device.h
index 38f8e59a6..7c1251e67 100644
--- a/Headers/device.h
+++ b/Headers/device.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/driver.h b/Headers/driver.h
index 3ff61dedc..439ee9fc9 100644
--- a/Headers/driver.h
+++ b/Headers/driver.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/drivers.h b/Headers/drivers.h
index 78c75135d..987d25413 100644
--- a/Headers/drivers.h
+++ b/Headers/drivers.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/dynld.h b/Headers/dynld.h
index 7fcad8d76..d57979c84 100644
--- a/Headers/dynld.h
+++ b/Headers/dynld.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/embed.h b/Headers/embed.h
index 962991c82..9ed693e7a 100644
--- a/Headers/embed.h
+++ b/Headers/embed.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/ezusb.h b/Headers/ezusb.h
index 7b6fd9e97..f5259c67d 100644
--- a/Headers/ezusb.h
+++ b/Headers/ezusb.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/file.h b/Headers/file.h
index 702a253ad..e07111e63 100644
--- a/Headers/file.h
+++ b/Headers/file.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -41,6 +41,8 @@ extern int isExplicitPath (const char *path);
 
 extern char *joinPath (const char *const *components, unsigned int count);
 extern char *makePath (const char *directory, const char *file);
+extern int anchorRelativePath (char **path, const char *anchor);
+extern char *makeHelperPath (const char *name);
 
 extern int hasFileExtension (const char *path, const char *extension);
 extern char *replaceFileExtension (const char *path, const char *extension);
@@ -59,11 +61,9 @@ extern int createDirectory (const char *path, int worldWritable);
 extern int ensureDirectory (const char *path, int worldWritable);
 extern int ensurePathDirectory (const char *path);
 
-extern void setUpdatableDirectory (const char *directory);
 extern const char *getUpdatableDirectory (void);
 extern char *makeUpdatablePath (const char *file);
 
-extern void setWritableDirectory (const char *directory);
 extern const char *getWritableDirectory (void);
 extern char *makeWritablePath (const char *file);
 
diff --git a/Headers/fm.h b/Headers/fm.h
index d542094fe..d9ac1958e 100644
--- a/Headers/fm.h
+++ b/Headers/fm.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/fm_adlib.h b/Headers/fm_adlib.h
index fd2771638..e780f8407 100644
--- a/Headers/fm_adlib.h
+++ b/Headers/fm_adlib.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/get_curses.h b/Headers/get_curses.h
index 61bc48cac..84e140fcd 100644
--- a/Headers/get_curses.h
+++ b/Headers/get_curses.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/get_select.h b/Headers/get_select.h
index c783551fc..dd92e71b0 100644
--- a/Headers/get_select.h
+++ b/Headers/get_select.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/get_sockets.h b/Headers/get_sockets.h
index c33b2c5ed..f41a46752 100644
--- a/Headers/get_sockets.h
+++ b/Headers/get_sockets.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/get_thread.h b/Headers/get_thread.h
index 762cda6d7..d8c3dbc82 100644
--- a/Headers/get_thread.h
+++ b/Headers/get_thread.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/gettime.h b/Headers/gettime.h
index 5638bf054..e42bf5239 100644
--- a/Headers/gettime.h
+++ b/Headers/gettime.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/gio_types.h b/Headers/gio_types.h
index fee40bf28..a83274d4e 100644
--- a/Headers/gio_types.h
+++ b/Headers/gio_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/hid_braille.h b/Headers/hid_braille.h
index 2009dd657..200ad9af2 100644
--- a/Headers/hid_braille.h
+++ b/Headers/hid_braille.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/hid_defs.h b/Headers/hid_defs.h
index aad958d42..060e3e203 100644
--- a/Headers/hid_defs.h
+++ b/Headers/hid_defs.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/hid_inspect.h b/Headers/hid_inspect.h
index 697b88d6e..df7d5743b 100644
--- a/Headers/hid_inspect.h
+++ b/Headers/hid_inspect.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/hid_items.h b/Headers/hid_items.h
index 5bbe98408..8d75d4ba5 100644
--- a/Headers/hid_items.h
+++ b/Headers/hid_items.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/hid_tables.h b/Headers/hid_tables.h
index 683ef3c6f..4f7f2abc0 100644
--- a/Headers/hid_tables.h
+++ b/Headers/hid_tables.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/hid_types.h b/Headers/hid_types.h
index 5c9de9722..552c2f88a 100644
--- a/Headers/hid_types.h
+++ b/Headers/hid_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/hostcmd.h b/Headers/hostcmd.h
index 381b9830f..688b78e63 100644
--- a/Headers/hostcmd.h
+++ b/Headers/hostcmd.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/ihex.h b/Headers/ihex.h
index 15e60f83a..69dc33981 100644
--- a/Headers/ihex.h
+++ b/Headers/ihex.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/ihex_types.h b/Headers/ihex_types.h
index 76bdee129..585ccc784 100644
--- a/Headers/ihex_types.h
+++ b/Headers/ihex_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/io_bluetooth.h b/Headers/io_bluetooth.h
index 5e44f37e2..e44749f48 100644
--- a/Headers/io_bluetooth.h
+++ b/Headers/io_bluetooth.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/io_generic.h b/Headers/io_generic.h
index 58216ab26..000c9d6d8 100644
--- a/Headers/io_generic.h
+++ b/Headers/io_generic.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/io_hid.h b/Headers/io_hid.h
index a038b3458..d0c0c0e80 100644
--- a/Headers/io_hid.h
+++ b/Headers/io_hid.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/io_misc.h b/Headers/io_misc.h
index 3b88933f4..90a01dba0 100644
--- a/Headers/io_misc.h
+++ b/Headers/io_misc.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/io_serial.h b/Headers/io_serial.h
index 5df6e2343..7affa493b 100644
--- a/Headers/io_serial.h
+++ b/Headers/io_serial.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/io_usb.h b/Headers/io_usb.h
index d004b3409..484aa537a 100644
--- a/Headers/io_usb.h
+++ b/Headers/io_usb.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/kbd_keycodes.h b/Headers/kbd_keycodes.h
index a1e0ce3d2..68e63a723 100644
--- a/Headers/kbd_keycodes.h
+++ b/Headers/kbd_keycodes.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/ktb.h b/Headers/ktb.h
index f21169f9a..003b1b65d 100644
--- a/Headers/ktb.h
+++ b/Headers/ktb.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/ktb_types.h b/Headers/ktb_types.h
index d5783a25c..d8daba26f 100644
--- a/Headers/ktb_types.h
+++ b/Headers/ktb_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/leds.h b/Headers/leds.h
index dc2a7fca3..f09062402 100644
--- a/Headers/leds.h
+++ b/Headers/leds.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/lock.h b/Headers/lock.h
index 214d8e156..7a7cbecad 100644
--- a/Headers/lock.h
+++ b/Headers/lock.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/log.h b/Headers/log.h
index 79f61a0fa..19daff895 100644
--- a/Headers/log.h
+++ b/Headers/log.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/log_history.h b/Headers/log_history.h
index 7a870f45a..577912d5a 100644
--- a/Headers/log_history.h
+++ b/Headers/log_history.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/menu.h b/Headers/menu.h
index da5690994..4b9c39bfa 100644
--- a/Headers/menu.h
+++ b/Headers/menu.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -34,8 +34,6 @@ typedef struct {
 extern Menu *newMenu (void);
 extern void destroyMenu (Menu *menu);
 
-extern MenuItem *newTextMenuItem (Menu *menu, const MenuString *name, const char *text);
-
 typedef void NumericMenuItemFormatter (
   Menu *menu, unsigned char value,
   char *buffer, size_t size
@@ -74,9 +72,10 @@ extern MenuItem *newFilesMenuItem (
 typedef void MenuToolFunction (void);
 extern MenuItem *newToolMenuItem (Menu *menu, const MenuString *name, MenuToolFunction *function);
 
-extern Menu *newSubmenuMenuItem (
-  Menu *menu, const MenuString *name
-);
+extern MenuItem *newTextMenuItem (Menu *menu, const MenuString *name, const char *text);
+extern MenuItem *newStringOptionMenuItem (Menu *menu, const MenuString *name, char *const *option);
+extern MenuItem *newFlagOptionMenuItem (Menu *menu, const MenuString *name, int *option);
+extern Menu *newSubmenuMenuItem (Menu *menu, const MenuString *name);
 
 typedef int MenuItemTester (void);
 extern void setMenuItemTester (MenuItem *item, MenuItemTester *handler);
diff --git a/Headers/message.h b/Headers/message.h
index 29da0f1ca..d3442ff56 100644
--- a/Headers/message.h
+++ b/Headers/message.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -31,6 +31,7 @@ typedef enum {
 } MessageOptions;
 
 extern int message (const char *mode, const char *text, MessageOptions options);
+extern int sayMessage (const char *text);
 
 extern int messageHoldTimeout;
 
diff --git a/Headers/messages.h b/Headers/messages.h
index a3fbc1c5c..b5b61f318 100644
--- a/Headers/messages.h
+++ b/Headers/messages.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/midi.h b/Headers/midi.h
index c7a60289b..bb1496337 100644
--- a/Headers/midi.h
+++ b/Headers/midi.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/mntfs.h b/Headers/mntfs.h
index 020e9f633..16f03f7c0 100644
--- a/Headers/mntfs.h
+++ b/Headers/mntfs.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/mntpt.h b/Headers/mntpt.h
index a3a7bc032..8878144ad 100644
--- a/Headers/mntpt.h
+++ b/Headers/mntpt.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/morse.h b/Headers/morse.h
index dc40f6c03..e6f2a6717 100644
--- a/Headers/morse.h
+++ b/Headers/morse.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/msg_queue.h b/Headers/msg_queue.h
index d844a137f..170df06d6 100644
--- a/Headers/msg_queue.h
+++ b/Headers/msg_queue.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/note_types.h b/Headers/note_types.h
index dc6d685c8..ebb3fcda7 100644
--- a/Headers/note_types.h
+++ b/Headers/note_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/notes.h b/Headers/notes.h
index 475886078..84f886301 100644
--- a/Headers/notes.h
+++ b/Headers/notes.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -58,9 +58,6 @@ extern const NoteMethods pcmNoteMethods;
 extern const NoteMethods midiNoteMethods;
 extern const NoteMethods fmNoteMethods;
 
-extern char *opt_pcmDevice;
-extern char *opt_midiDevice;
-
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
diff --git a/Headers/params.h b/Headers/params.h
index d1d2b2a7d..9296ff031 100644
--- a/Headers/params.h
+++ b/Headers/params.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/parse.h b/Headers/parse.h
index 74234cf33..4232c2688 100644
--- a/Headers/parse.h
+++ b/Headers/parse.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/pcm.h b/Headers/pcm.h
index 66cb4301c..019abf964 100644
--- a/Headers/pcm.h
+++ b/Headers/pcm.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/pgmpath.h b/Headers/pgmpath.h
index 76e66bd85..82202ba94 100644
--- a/Headers/pgmpath.h
+++ b/Headers/pgmpath.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/pgmprivs.h b/Headers/pgmprivs.h
index e1e4bd1d2..07c3278a8 100644
--- a/Headers/pgmprivs.h
+++ b/Headers/pgmprivs.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/pid.h b/Headers/pid.h
index 0dbcd4fe2..a1e571b8c 100644
--- a/Headers/pid.h
+++ b/Headers/pid.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/ports.h b/Headers/ports.h
index 28176b976..18a8ea421 100644
--- a/Headers/ports.h
+++ b/Headers/ports.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/prefs.h b/Headers/prefs.h
index 396c8ccf5..811f10c8c 100644
--- a/Headers/prefs.h
+++ b/Headers/prefs.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -216,6 +216,7 @@ typedef struct {
 
   unsigned char autoreleaseTime;
   unsigned char onFirstRelease;
+  unsigned char alternatePasteModeEnabled;
   unsigned char touchNavigation;
 
   unsigned char scrollAwareCursorNavigation;
diff --git a/Headers/program.h b/Headers/program.h
index e72be9160..c36b9c68b 100644
--- a/Headers/program.h
+++ b/Headers/program.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -49,9 +49,8 @@ extern void onProgramExit (const char *name, ProgramExitHandler *handler, void *
 extern void registerProgramMemory (const char *name, void *pointer);
 
 extern const char *getProgramDirectory (void);
-extern int fixInstallPath (char **path);
+extern int toAbsoluteInstallPath (char **path);
 extern char *makeProgramPath (const char *name);
-extern char *makeCommandPath (const char *name);
 
 extern int createPidFile (const char *path, ProcessIdentifier pid);
 extern int cancelProgram (const char *pidFile);
diff --git a/Headers/prologue.h b/Headers/prologue.h
index 5290f4ca6..423af00ca 100644
--- a/Headers/prologue.h
+++ b/Headers/prologue.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/pty_object.h b/Headers/pty_object.h
index 57cc018c7..15663eff2 100644
--- a/Headers/pty_object.h
+++ b/Headers/pty_object.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/pty_screen.h b/Headers/pty_screen.h
index 03807d9e4..a113f856d 100644
--- a/Headers/pty_screen.h
+++ b/Headers/pty_screen.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -28,6 +28,7 @@ extern "C" {
 
 extern int ptyBeginScreen (PtyObject *pty, int driverDirectives);
 extern void ptyEndScreen (void);
+extern void ptyResizeScreen (unsigned int lines, unsigned int columns);
 extern void ptyRefreshScreen (void);
 
 extern void ptySetCursorPosition (unsigned int row, unsigned int column);
diff --git a/Headers/pty_terminal.h b/Headers/pty_terminal.h
index 7f6d4708a..bcd05aefe 100644
--- a/Headers/pty_terminal.h
+++ b/Headers/pty_terminal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -29,6 +29,7 @@ extern const char *ptyGetTerminalType (void);
 
 extern int ptyBeginTerminal (PtyObject *pty, int driverDirectives);
 extern void ptyEndTerminal (void);
+extern void ptyResizeTerminal (unsigned int lines, unsigned int columns);
 
 extern int ptyProcessTerminalInput (PtyObject *pty);
 extern int ptyProcessTerminalOutput (const unsigned char *bytes, size_t count);
diff --git a/Headers/queue.h b/Headers/queue.h
index eabdc49f3..02d02f539 100644
--- a/Headers/queue.h
+++ b/Headers/queue.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/revision.h b/Headers/revision.h
index 036c8dd34..ff99b7c72 100644
--- a/Headers/revision.h
+++ b/Headers/revision.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/rgx.h b/Headers/rgx.h
index 63d3edd73..18950a575 100644
--- a/Headers/rgx.h
+++ b/Headers/rgx.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/scr_base.h b/Headers/scr_base.h
index 624a29ab4..0f4b21d3e 100644
--- a/Headers/scr_base.h
+++ b/Headers/scr_base.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -42,6 +42,7 @@ typedef struct {
 
   int (*readCharacters) (const ScreenBox *box, ScreenCharacter *buffer);
   int (*insertKey) (ScreenKey key);
+  ScreenPasteMode (*getPasteMode) (void);
   int (*routeCursor) (int column, int row, int screen);
 
   int (*highlightRegion) (int left, int right, int top, int bottom);
@@ -62,7 +63,7 @@ typedef struct {
 } BaseScreen;
 
 extern void initializeBaseScreen (BaseScreen *);
-extern void describeBaseScreen (BaseScreen *, ScreenDescription *);
+extern void describeScreenObject (ScreenDescription *description, BaseScreen *screen);
 
 extern int validateScreenBox (const ScreenBox *box, int columns, int rows);
 extern void setScreenMessage (const ScreenBox *box, ScreenCharacter *buffer, const char *message);
diff --git a/Headers/scr_driver.h b/Headers/scr_driver.h
index 62ff5b75e..bf433e7f0 100644
--- a/Headers/scr_driver.h
+++ b/Headers/scr_driver.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/scr_emulator.h b/Headers/scr_emulator.h
index 2f5ac3f03..8f877dddb 100644
--- a/Headers/scr_emulator.h
+++ b/Headers/scr_emulator.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/scr_gpm.h b/Headers/scr_gpm.h
index 5a3a3d5cf..f142c6d8f 100644
--- a/Headers/scr_gpm.h
+++ b/Headers/scr_gpm.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/scr_main.h b/Headers/scr_main.h
index 54a48db51..027adbde9 100644
--- a/Headers/scr_main.h
+++ b/Headers/scr_main.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/scr_real.h b/Headers/scr_real.h
index 3ca9d32d5..4d62a3b38 100644
--- a/Headers/scr_real.h
+++ b/Headers/scr_real.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/scr_terminal.h b/Headers/scr_terminal.h
index 9c638c794..52293ed3c 100644
--- a/Headers/scr_terminal.h
+++ b/Headers/scr_terminal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/scr_types.h b/Headers/scr_types.h
index a34541263..0665bf262 100644
--- a/Headers/scr_types.h
+++ b/Headers/scr_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -158,6 +158,12 @@ isSpecialKey (ScreenKey key) {
 /* must be less than 0 */
 #define SCR_NO_VT -1
 
+typedef enum {
+  SPM_UNKNOWN,
+  SPM_PLAIN,
+  SPM_BRACKETED,
+} ScreenPasteMode;
+
 typedef struct ScreenDriverStruct ScreenDriver;
 
 #ifdef __cplusplus
diff --git a/Headers/scr_utils.h b/Headers/scr_utils.h
index c5a5b547f..814f585ee 100644
--- a/Headers/scr_utils.h
+++ b/Headers/scr_utils.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/serial_types.h b/Headers/serial_types.h
index 3c1f8c901..92468de93 100644
--- a/Headers/serial_types.h
+++ b/Headers/serial_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/service.h b/Headers/service.h
index 03c899472..df76c7fb5 100644
--- a/Headers/service.h
+++ b/Headers/service.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/spk.h b/Headers/spk.h
index 4a2938e63..e3dad7667 100644
--- a/Headers/spk.h
+++ b/Headers/spk.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -68,6 +68,7 @@ extern int toNormalizedSpeechPitch (unsigned char pitch);
 
 extern int canSetSpeechPunctuation (SpeechSynthesizer *spk);
 extern int setSpeechPunctuation (SpeechSynthesizer *spk, SpeechPunctuation setting, int say);
+extern const char *getSpeechPunctuation (unsigned char level);
 
 extern int haveSpeechDriver (const char *code);
 extern const char *getDefaultSpeechDriver (void);
diff --git a/Headers/spk_base.h b/Headers/spk_base.h
index 2d302683b..688cca740 100644
--- a/Headers/spk_base.h
+++ b/Headers/spk_base.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/spk_driver.h b/Headers/spk_driver.h
index c8d499253..1357d4dfb 100644
--- a/Headers/spk_driver.h
+++ b/Headers/spk_driver.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/spk_types.h b/Headers/spk_types.h
index 791b76c50..60614306b 100644
--- a/Headers/spk_types.h
+++ b/Headers/spk_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -43,6 +43,7 @@ typedef enum {
 typedef enum {
   SPK_PUNCTUATION_NONE,
   SPK_PUNCTUATION_SOME,
+  SPK_PUNCTUATION_MOST,
   SPK_PUNCTUATION_ALL
 } SpeechPunctuation;
 
diff --git a/Headers/status_types.h b/Headers/status_types.h
index ca2421980..9d88c2280 100644
--- a/Headers/status_types.h
+++ b/Headers/status_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/stdiox.h b/Headers/stdiox.h
index 4fcf21780..a21cdbd15 100644
--- a/Headers/stdiox.h
+++ b/Headers/stdiox.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/strfmt.h b/Headers/strfmt.h
index 61fc06c93..e3d3df88f 100644
--- a/Headers/strfmt.h
+++ b/Headers/strfmt.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/strfmth.h b/Headers/strfmth.h
index 24c4e6965..740858669 100644
--- a/Headers/strfmth.h
+++ b/Headers/strfmth.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/system.h b/Headers/system.h
index 577d48996..6ed62fee8 100644
--- a/Headers/system.h
+++ b/Headers/system.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/system_darwin.h b/Headers/system_darwin.h
index 7dcbf74a0..5557958c0 100644
--- a/Headers/system_darwin.h
+++ b/Headers/system_darwin.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/system_java.h b/Headers/system_java.h
index 5f7013555..a9ed12bcf 100644
--- a/Headers/system_java.h
+++ b/Headers/system_java.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/system_linux.h b/Headers/system_linux.h
index 3520e9fb1..305d2f2c9 100644
--- a/Headers/system_linux.h
+++ b/Headers/system_linux.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -23,6 +23,8 @@
 extern "C" {
 #endif /* __cplusplus */
 
+extern int getKernelRelease (int *major, int *minor, int *patch);
+
 typedef struct {
   const char *path;
   void *data;
diff --git a/Headers/system_msdos.h b/Headers/system_msdos.h
index 2de87d004..a3be4106f 100644
--- a/Headers/system_msdos.h
+++ b/Headers/system_msdos.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/system_windows.h b/Headers/system_windows.h
index 385c60f50..2af101fcd 100644
--- a/Headers/system_windows.h
+++ b/Headers/system_windows.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/thread.h b/Headers/thread.h
index 818b34594..a4ec8ce85 100644
--- a/Headers/thread.h
+++ b/Headers/thread.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/timing.h b/Headers/timing.h
index d7fddfe21..bd054a60c 100644
--- a/Headers/timing.h
+++ b/Headers/timing.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/timing_types.h b/Headers/timing_types.h
index 43a5d623b..53374e532 100644
--- a/Headers/timing_types.h
+++ b/Headers/timing_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/ttb.h b/Headers/ttb.h
index baed02b80..73eaf7d45 100644
--- a/Headers/ttb.h
+++ b/Headers/ttb.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/tune.h b/Headers/tune.h
index 7eb910b68..610de814e 100644
--- a/Headers/tune.h
+++ b/Headers/tune.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/tune_builder.h b/Headers/tune_builder.h
index 44807f637..3cccd67e8 100644
--- a/Headers/tune_builder.h
+++ b/Headers/tune_builder.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/tune_types.h b/Headers/tune_types.h
index 35d02c970..d5309ce1d 100644
--- a/Headers/tune_types.h
+++ b/Headers/tune_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/tune_utils.h b/Headers/tune_utils.h
index b49bad368..9ba973148 100644
--- a/Headers/tune_utils.h
+++ b/Headers/tune_utils.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/unicode.h b/Headers/unicode.h
index 2162ba6b2..fb037f481 100644
--- a/Headers/unicode.h
+++ b/Headers/unicode.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/usb_hid.h b/Headers/usb_hid.h
index 01ac02250..d24df2019 100644
--- a/Headers/usb_hid.h
+++ b/Headers/usb_hid.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/usb_types.h b/Headers/usb_types.h
index 62f93cbaa..af078b723 100644
--- a/Headers/usb_types.h
+++ b/Headers/usb_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/utf8.h b/Headers/utf8.h
index bd2236e94..80a179579 100644
--- a/Headers/utf8.h
+++ b/Headers/utf8.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/variables.h b/Headers/variables.h
index 442f561ca..d68018afc 100644
--- a/Headers/variables.h
+++ b/Headers/variables.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/win_errno.h b/Headers/win_errno.h
index c06969383..654517d07 100644
--- a/Headers/win_errno.h
+++ b/Headers/win_errno.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Headers/win_pthread.h b/Headers/win_pthread.h
index fe0ab538f..53d04ec8c 100644
--- a/Headers/win_pthread.h
+++ b/Headers/win_pthread.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Makefile.in b/Makefile.in
index 2bfadff63..02b83230e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Messages/Makefile.in b/Messages/Makefile.in
index 488362e8b..57e2e2009 100644
--- a/Messages/Makefile.in
+++ b/Messages/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Messages/ar.po b/Messages/ar.po
index d97bd46cc..fe04704bd 100644
--- a/Messages/ar.po
+++ b/Messages/ar.po
@@ -1,7 +1,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Messages/brltty.pot b/Messages/brltty.pot
index 350e04bbf..e206a5f8d 100644
--- a/Messages/brltty.pot
+++ b/Messages/brltty.pot
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: brltty 6.5\n"
+"Project-Id-Version: brltty 6.7\n"
 "Report-Msgid-Bugs-To: BRLTTY@brltty.app\n"
-"POT-Creation-Date: 2024-10-11 19:57+0200\n"
+"POT-Creation-Date: 2025-04-07 08:09+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -48,83 +48,83 @@ msgid_plural "%u seconds"
 msgstr[0] ""
 msgstr[1] ""
 
-#: Programs/menu_prefs.c:543
 #: Programs/menu_prefs.c:544
-#: Programs/menu_prefs.c:546
+#: Programs/menu_prefs.c:545
 #: Programs/menu_prefs.c:547
-#: Programs/menu_prefs.c:550
+#: Programs/menu_prefs.c:548
 #: Programs/menu_prefs.c:551
 #: Programs/menu_prefs.c:552
-#: Programs/menu_prefs.c:554
+#: Programs/menu_prefs.c:553
 #: Programs/menu_prefs.c:555
-#: Programs/menu_prefs.c:561
+#: Programs/menu_prefs.c:556
+#: Programs/menu_prefs.c:562
 msgid "1 cell"
 msgstr ""
 
-#: Programs/menu_prefs.c:902
+#: Programs/menu_prefs.c:903
 msgid "1 second"
 msgstr ""
 
-#: Programs/menu_prefs.c:964
+#: Programs/menu_prefs.c:965
 msgid "10 seconds"
 msgstr ""
 
-#: Programs/menu_prefs.c:1297
+#: Programs/menu_prefs.c:1298
 msgid "12 Hour"
 msgstr ""
 
-#: Programs/menu_prefs.c:542
-#: Programs/menu_prefs.c:545
-#: Programs/menu_prefs.c:548
+#: Programs/menu_prefs.c:543
+#: Programs/menu_prefs.c:546
 #: Programs/menu_prefs.c:549
-#: Programs/menu_prefs.c:553
+#: Programs/menu_prefs.c:550
+#: Programs/menu_prefs.c:554
 msgid "2 cells"
 msgstr ""
 
-#: Programs/menu_prefs.c:903
+#: Programs/menu_prefs.c:904
 msgid "2 seconds"
 msgstr ""
 
-#: Programs/menu_prefs.c:965
+#: Programs/menu_prefs.c:966
 msgid "20 seconds"
 msgstr ""
 
-#: Programs/menu_prefs.c:1296
+#: Programs/menu_prefs.c:1297
 msgid "24 Hour"
 msgstr ""
 
-#: Programs/menu_prefs.c:900
+#: Programs/menu_prefs.c:901
 msgid "250 milliseconds"
 msgstr ""
 
-#: Programs/menu_prefs.c:557
 #: Programs/menu_prefs.c:558
 #: Programs/menu_prefs.c:559
 #: Programs/menu_prefs.c:560
+#: Programs/menu_prefs.c:561
 msgid "3 cells"
 msgstr ""
 
-#: Programs/menu_prefs.c:966
+#: Programs/menu_prefs.c:967
 msgid "40 seconds"
 msgstr ""
 
-#: Programs/menu_prefs.c:963
+#: Programs/menu_prefs.c:964
 msgid "5 seconds"
 msgstr ""
 
-#: Programs/menu_prefs.c:901
+#: Programs/menu_prefs.c:902
 msgid "500 milliseconds"
 msgstr ""
 
-#: Programs/menu_prefs.c:734
+#: Programs/menu_prefs.c:735
 msgid "6-dot"
 msgstr ""
 
-#: Programs/brltty-ttb.c:169
+#: Programs/brltty-ttb.c:170
 msgid "8-bit character set to use."
 msgstr ""
 
-#: Programs/menu_prefs.c:733
+#: Programs/menu_prefs.c:734
 msgid "8-dot"
 msgstr ""
 
@@ -132,8 +132,12 @@ msgstr ""
 msgid "<off>"
 msgstr ""
 
+#: Programs/menu_prefs.c:1748
+msgid "API Parameters"
+msgstr ""
+
 #. xgettext: This is the description of the PASSAT command.
-#: Programs/cmds.auto.h:1487
+#: Programs/cmds.auto.h:1502
 msgid "AT (set 2) keyboard scan code"
 msgstr ""
 
@@ -165,7 +169,7 @@ msgstr ""
 msgid "Acoustic Guitar (steel)"
 msgstr ""
 
-#: Programs/menu_prefs.c:1323
+#: Programs/menu_prefs.c:1324
 msgid "After Time"
 msgstr ""
 
@@ -174,32 +178,32 @@ msgstr ""
 msgid "Agogo"
 msgstr ""
 
-#: Programs/menu_prefs.c:1511
+#: Programs/menu_prefs.c:1760
 msgid "Alert"
 msgstr ""
 
-#: Programs/menu_prefs.c:1106
+#: Programs/menu_prefs.c:1107
 msgid "Alert Dots"
 msgstr ""
 
-#: Programs/menu_prefs.c:1111
+#: Programs/menu_prefs.c:1112
 msgid "Alert Messages"
 msgstr ""
 
-#: Programs/menu_prefs.c:1051
+#: Programs/menu_prefs.c:1052
 msgid "Alert Tunes"
 msgstr ""
 
-#: Programs/menu_prefs.c:866
-#: Programs/menu_prefs.c:1214
+#: Programs/menu_prefs.c:867
+#: Programs/spk.c:282
 msgid "All"
 msgstr ""
 
-#: Programs/menu_prefs.c:555
+#: Programs/menu_prefs.c:556
 msgid "Alphabetic Cursor Coordinates"
 msgstr ""
 
-#: Programs/menu_prefs.c:554
+#: Programs/menu_prefs.c:555
 msgid "Alphabetic Window Coordinates"
 msgstr ""
 
@@ -217,15 +221,16 @@ msgstr ""
 msgid "Async Events"
 msgstr ""
 
-#: Programs/menu_prefs.c:808
+#: Programs/menu_prefs.c:809
 msgid "Attributes Blink Period"
 msgstr ""
 
-#: Programs/menu_prefs.c:816
+#: Programs/menu_prefs.c:817
 msgid "Attributes Percent Visible"
 msgstr ""
 
-#: Programs/menu_prefs.c:1426
+#: Programs/menu_prefs.c:1427
+#: Programs/menu_prefs.c:1606
 msgid "Attributes Table"
 msgstr ""
 
@@ -237,31 +242,31 @@ msgstr ""
 msgid "Autorelease"
 msgstr ""
 
-#: Programs/menu_prefs.c:969
+#: Programs/menu_prefs.c:970
 msgid "Autorelease Time"
 msgstr ""
 
-#: Programs/menu_prefs.c:986
+#: Programs/menu_prefs.c:987
 msgid "Autorepeat Enabled"
 msgstr ""
 
-#: Programs/menu_prefs.c:992
+#: Programs/menu_prefs.c:993
 msgid "Autorepeat Interval"
 msgstr ""
 
-#: Programs/menu_prefs.c:999
+#: Programs/menu_prefs.c:1000
 msgid "Autorepeat Panning"
 msgstr ""
 
-#: Programs/menu_prefs.c:1133
+#: Programs/menu_prefs.c:1134
 msgid "Autospeak"
 msgstr ""
 
-#: Programs/menu_prefs.c:1130
+#: Programs/menu_prefs.c:1131
 msgid "Autospeak Options"
 msgstr ""
 
-#: Programs/config.c:2138
+#: Programs/config.c:2146
 msgid "BRLTTY stopped"
 msgstr ""
 
@@ -290,11 +295,11 @@ msgstr ""
 msgid "Bassoon"
 msgstr ""
 
-#: Programs/menu_prefs.c:1058
+#: Programs/menu_prefs.c:1059
 msgid "Beeper"
 msgstr ""
 
-#: Programs/menu_prefs.c:1322
+#: Programs/menu_prefs.c:1323
 msgid "Before Time"
 msgstr ""
 
@@ -303,24 +308,24 @@ msgstr ""
 msgid "Bird Tweet"
 msgstr ""
 
-#: Programs/menu_prefs.c:802
+#: Programs/menu_prefs.c:803
 msgid "Blinking Attributes"
 msgstr ""
 
-#: Programs/menu_prefs.c:824
+#: Programs/menu_prefs.c:825
 msgid "Blinking Capitals"
 msgstr ""
 
-#: Programs/menu_prefs.c:775
+#: Programs/menu_prefs.c:776
 msgid "Blinking Screen Cursor"
 msgstr ""
 
-#: Programs/menu_prefs.c:1268
+#: Programs/menu_prefs.c:1269
 msgid "Blinking Speech Cursor"
 msgstr ""
 
-#: Programs/menu_prefs.c:665
-#: Programs/menu_prefs.c:1382
+#: Programs/menu_prefs.c:666
+#: Programs/menu_prefs.c:1383
 msgid "Block"
 msgstr ""
 
@@ -333,15 +338,24 @@ msgstr ""
 msgid "Bluetooth I/O"
 msgstr ""
 
-#: Programs/config.c:1907
+#: Programs/menu_prefs.c:1551
+msgid "Boot Parameters"
+msgstr ""
+
+#: Programs/config.c:1915
+#: Programs/menu_prefs.c:1641
 msgid "Braille Device"
 msgstr ""
 
+#: Programs/menu_prefs.c:1631
+msgid "Braille Driver"
+msgstr ""
+
 #: Programs/log.c:155
 msgid "Braille Driver Events"
 msgstr ""
 
-#: Programs/menu_prefs.c:753
+#: Programs/menu_prefs.c:754
 msgid "Braille Firmness"
 msgstr ""
 
@@ -349,32 +363,36 @@ msgstr ""
 msgid "Braille Key Events"
 msgstr ""
 
-#: Programs/menu_prefs.c:699
+#: Programs/menu_prefs.c:1636
+msgid "Braille Parameters"
+msgstr ""
+
+#: Programs/menu_prefs.c:700
 msgid "Braille Presentation"
 msgstr ""
 
-#: Programs/menu_prefs.c:1409
+#: Programs/menu_prefs.c:1410
 msgid "Braille Tables"
 msgstr ""
 
-#: Programs/menu_prefs.c:934
+#: Programs/menu_prefs.c:935
 msgid "Braille Typing"
 msgstr ""
 
-#: Programs/menu_prefs.c:707
+#: Programs/menu_prefs.c:708
 msgid "Braille Variant"
 msgstr ""
 
-#: Programs/menu_prefs.c:887
+#: Programs/menu_prefs.c:888
 msgid "Braille Window Overlap"
 msgstr ""
 
-#: Programs/config.c:410
+#: Programs/config.c:409
 #, c-format
 msgid "Braille driver code (%s, %s, or one of {%s})."
 msgstr ""
 
-#: Programs/brltty-ktb.c:47
+#: Programs/brltty-ktb.c:48
 msgid "Braille driver code."
 msgstr ""
 
@@ -406,23 +424,23 @@ msgstr ""
 msgid "BrlAPI host and/or port to connect to"
 msgstr ""
 
-#: Programs/menu_prefs.c:1444
+#: Programs/menu_prefs.c:1467
 msgid "Build Information"
 msgstr ""
 
-#: Programs/menu_prefs.c:726
+#: Programs/menu_prefs.c:727
 msgid "Capitalization Mode"
 msgstr ""
 
-#: Programs/menu_prefs.c:829
+#: Programs/menu_prefs.c:830
 msgid "Capitals Blink Period"
 msgstr ""
 
-#: Programs/menu_prefs.c:837
+#: Programs/menu_prefs.c:838
 msgid "Capitals Percent Visible"
 msgstr ""
 
-#: Programs/menu_prefs.c:1534
+#: Programs/menu_prefs.c:1780
 msgid "Category Log Level"
 msgstr ""
 
@@ -437,15 +455,15 @@ msgstr ""
 msgid "Cello"
 msgstr ""
 
-#: Programs/brltty-atb.c:49
+#: Programs/brltty-atb.c:50
 msgid "Check an attributes table."
 msgstr ""
 
-#: Programs/brltty-ttb.c:2513
+#: Programs/brltty-ttb.c:2514
 msgid "Check/edit a text (computer braille) table, or convert it from one format to another."
 msgstr ""
 
-#: Programs/brltty-ctb.c:449
+#: Programs/brltty-ctb.c:450
 msgid "Check/validate a contraction (literary braille) table, or translate text into contracted braille."
 msgstr ""
 
@@ -474,31 +492,32 @@ msgstr ""
 msgid "Clavinet"
 msgstr ""
 
-#: Programs/menu.c:891
+#: Programs/menu.c:943
 msgid "Close"
 msgstr ""
 
-#: Programs/menu_prefs.c:1306
+#: Programs/menu_prefs.c:1307
 msgid "Colon"
 msgstr ""
 
-#: Programs/brltty-tune.c:158
+#: Programs/brltty-tune.c:159
 msgid "Compose a tune with the tune builder and play it with the tone generator."
 msgstr ""
 
-#: Programs/menu_prefs.c:703
+#: Programs/menu_prefs.c:704
 msgid "Computer Braille"
 msgstr ""
 
-#: Programs/menu_prefs.c:737
+#: Programs/menu_prefs.c:738
 msgid "Computer Braille Cell Type"
 msgstr ""
 
-#: Programs/menu_prefs.c:1468
+#: Programs/menu_prefs.c:1501
 msgid "Configuration Directory"
 msgstr ""
 
-#: Programs/menu_prefs.c:1473
+#: Programs/menu_prefs.c:1491
+#: Programs/menu_prefs.c:1541
 msgid "Configuration File"
 msgstr ""
 
@@ -506,7 +525,7 @@ msgstr ""
 msgid "Console Bell"
 msgstr ""
 
-#: Programs/menu_prefs.c:1037
+#: Programs/menu_prefs.c:1038
 msgid "Console Bell Alert"
 msgstr ""
 
@@ -515,19 +534,20 @@ msgstr ""
 msgid "Contrabass"
 msgstr ""
 
-#: Programs/menu_prefs.c:704
+#: Programs/menu_prefs.c:705
 msgid "Contracted Braille"
 msgstr ""
 
-#: Programs/menu_prefs.c:1419
+#: Programs/menu_prefs.c:1420
+#: Programs/menu_prefs.c:1601
 msgid "Contraction Table"
 msgstr ""
 
-#: Programs/brltty-ctb.c:73
+#: Programs/brltty-ctb.c:74
 msgid "Contraction table."
 msgstr ""
 
-#: Programs/brltty-ctb.c:87
+#: Programs/brltty-ctb.c:88
 msgid "Contraction verification table."
 msgstr ""
 
@@ -535,16 +555,16 @@ msgstr ""
 msgid "Could not get XKB major opcode\n"
 msgstr ""
 
-#: Programs/menu_prefs.c:1512
+#: Programs/menu_prefs.c:1761
 msgid "Critical"
 msgstr ""
 
-#: Programs/menu_prefs.c:546
+#: Programs/menu_prefs.c:547
 msgid "Cursor Column"
 msgstr ""
 
-#: Programs/menu_prefs.c:545
-#: Programs/menu_prefs.c:557
+#: Programs/menu_prefs.c:546
+#: Programs/menu_prefs.c:558
 msgid "Cursor Coordinates"
 msgstr ""
 
@@ -552,7 +572,7 @@ msgstr ""
 msgid "Cursor Routing"
 msgstr ""
 
-#: Programs/menu_prefs.c:547
+#: Programs/menu_prefs.c:548
 msgid "Cursor Row"
 msgstr ""
 
@@ -560,49 +580,49 @@ msgstr ""
 msgid "Cursor Tracking"
 msgstr ""
 
-#: Programs/menu_prefs.c:906
+#: Programs/menu_prefs.c:907
 msgid "Cursor Tracking Delay"
 msgstr ""
 
-#: Programs/menu_prefs.c:548
-#: Programs/menu_prefs.c:559
+#: Programs/menu_prefs.c:549
+#: Programs/menu_prefs.c:560
 msgid "Cursor and Window Column"
 msgstr ""
 
-#: Programs/menu_prefs.c:549
-#: Programs/menu_prefs.c:560
+#: Programs/menu_prefs.c:550
+#: Programs/menu_prefs.c:561
 msgid "Cursor and Window Row"
 msgstr ""
 
-#: Programs/menu_prefs.c:1344
+#: Programs/menu_prefs.c:1345
 msgid "Dash"
 msgstr ""
 
-#: Programs/menu_prefs.c:1337
+#: Programs/menu_prefs.c:1338
 msgid "Date Format"
 msgstr ""
 
-#: Programs/menu_prefs.c:1326
+#: Programs/menu_prefs.c:1327
 msgid "Date Position"
 msgstr ""
 
-#: Programs/menu_prefs.c:1349
+#: Programs/menu_prefs.c:1350
 msgid "Date Separator"
 msgstr ""
 
-#: Programs/menu_prefs.c:1334
+#: Programs/menu_prefs.c:1335
 msgid "Day Month Year"
 msgstr ""
 
-#: Programs/menu_prefs.c:1517
+#: Programs/menu_prefs.c:1766
 msgid "Debug"
 msgstr ""
 
-#: Programs/config.c:431
+#: Programs/config.c:430
 msgid "Device for accessing braille display."
 msgstr ""
 
-#: Programs/config.c:592
+#: Programs/config.c:591
 msgid "Disable the application programming interface."
 msgstr ""
 
@@ -611,7 +631,7 @@ msgstr ""
 msgid "Distortion Guitar"
 msgstr ""
 
-#: Programs/config.c:506
+#: Programs/config.c:497
 msgid "Do not autospeak when braille is not being used."
 msgstr ""
 
@@ -619,11 +639,11 @@ msgstr ""
 msgid "Do not write any text to the braille device"
 msgstr ""
 
-#: Programs/brltty-trtxt.c:70
+#: Programs/brltty-trtxt.c:71
 msgid "Don't fall back to the Unicode base character."
 msgstr ""
 
-#: Programs/config.c:645
+#: Programs/config.c:644
 msgid "Don't switch to an unprivileged user or relinquish any privileges (group memberships, capabilities, etc)."
 msgstr ""
 
@@ -631,12 +651,12 @@ msgstr ""
 msgid "Done"
 msgstr ""
 
-#: Programs/menu_prefs.c:1307
-#: Programs/menu_prefs.c:1346
+#: Programs/menu_prefs.c:1308
+#: Programs/menu_prefs.c:1347
 msgid "Dot"
 msgstr ""
 
-#: Programs/menu_prefs.c:944
+#: Programs/menu_prefs.c:945
 msgid "Dots via Unicode Braille"
 msgstr ""
 
@@ -646,7 +666,8 @@ msgstr ""
 msgid "Drawbar Organ"
 msgstr ""
 
-#: Programs/menu_prefs.c:1493
+#: Programs/menu_prefs.c:1511
+#: Programs/menu_prefs.c:1571
 msgid "Drivers Directory"
 msgstr ""
 
@@ -655,7 +676,7 @@ msgstr ""
 msgid "Dulcimer"
 msgstr ""
 
-#: Programs/menu_prefs.c:881
+#: Programs/menu_prefs.c:882
 msgid "Eager Sliding Braille Window"
 msgstr ""
 
@@ -663,7 +684,7 @@ msgstr ""
 msgid "Echo (in hexadecimal) input received from the device."
 msgstr ""
 
-#: Programs/brltty-ttb.c:148
+#: Programs/brltty-ttb.c:149
 msgid "Edit table."
 msgstr ""
 
@@ -707,15 +728,15 @@ msgstr ""
 msgid "Electric Piano 2"
 msgstr ""
 
-#: Programs/menu_prefs.c:1510
+#: Programs/menu_prefs.c:1759
 msgid "Emergency"
 msgstr ""
 
-#: Programs/menu_prefs.c:541
+#: Programs/menu_prefs.c:542
 msgid "End"
 msgstr ""
 
-#: Programs/menu_prefs.c:867
+#: Programs/menu_prefs.c:868
 msgid "End of Line"
 msgstr ""
 
@@ -724,7 +745,7 @@ msgstr ""
 msgid "English Horn"
 msgstr ""
 
-#: Programs/menu_prefs.c:1249
+#: Programs/menu_prefs.c:1250
 msgid "Enqueue"
 msgstr ""
 
@@ -733,7 +754,11 @@ msgstr ""
 msgid "Ensemble"
 msgstr ""
 
-#: Programs/menu_prefs.c:1513
+#: Programs/menu_prefs.c:1546
+msgid "Environment Variables"
+msgstr ""
+
+#: Programs/menu_prefs.c:1762
 msgid "Error"
 msgstr ""
 
@@ -742,23 +767,23 @@ msgstr ""
 msgid "Ethnic Instruments"
 msgstr ""
 
-#: Programs/menu_prefs.c:1034
+#: Programs/menu_prefs.c:1035
 msgid "Event Alerts"
 msgstr ""
 
-#: Programs/menu_prefs.c:714
+#: Programs/menu_prefs.c:715
 msgid "Expand Current Word"
 msgstr ""
 
-#: Programs/config.c:584
+#: Programs/config.c:583
 msgid "Explicit preference settings."
 msgstr ""
 
-#: Programs/menu_prefs.c:1061
+#: Programs/menu_prefs.c:1062
 msgid "FM"
 msgstr ""
 
-#: Programs/menu_prefs.c:1099
+#: Programs/menu_prefs.c:1100
 msgid "FM Volume"
 msgstr ""
 
@@ -826,15 +851,15 @@ msgstr ""
 msgid "Flute"
 msgstr ""
 
-#: Programs/brltty-ctb.c:65
+#: Programs/brltty-ctb.c:66
 msgid "Force immediate output."
 msgstr ""
 
-#: Programs/brltty-ttb.c:155
+#: Programs/brltty-ttb.c:156
 msgid "Format of input file."
 msgstr ""
 
-#: Programs/brltty-ttb.c:162
+#: Programs/brltty-ttb.c:163
 msgid "Format of output file."
 msgstr ""
 
@@ -852,7 +877,15 @@ msgstr ""
 msgid "Frozen"
 msgstr ""
 
-#: Programs/menu_prefs.c:556
+#: Programs/menu_prefs.c:1621
+msgid "GUI Keyboard Enabled"
+msgstr ""
+
+#: Programs/menu_prefs.c:1626
+msgid "GUI Keyboard Table"
+msgstr ""
+
+#: Programs/menu_prefs.c:557
 msgid "Generic"
 msgstr ""
 
@@ -882,7 +915,7 @@ msgstr ""
 msgid "Gunshot"
 msgstr ""
 
-#: Programs/config.c:558
+#: Programs/config.c:557
 msgid "Handle keyboard key events when using a Linux tty in graphics mode."
 msgstr ""
 
@@ -905,16 +938,21 @@ msgstr ""
 msgid "Help Screen"
 msgstr ""
 
-#: Programs/menu_prefs.c:668
+#: Programs/menu_prefs.c:1516
+#: Programs/menu_prefs.c:1576
+msgid "Helpers Directory"
+msgstr ""
+
+#: Programs/menu_prefs.c:669
 msgid "Hide"
 msgstr ""
 
-#: Programs/menu_prefs.c:749
-#: Programs/menu_prefs.c:1015
+#: Programs/menu_prefs.c:750
+#: Programs/menu_prefs.c:1016
 msgid "High"
 msgstr ""
 
-#: Programs/menu_prefs.c:923
+#: Programs/menu_prefs.c:924
 msgid "Highlight Braille Window Location"
 msgstr ""
 
@@ -927,7 +965,7 @@ msgstr ""
 msgid "Human Interface I/O"
 msgstr ""
 
-#: Programs/menu_prefs.c:1248
+#: Programs/menu_prefs.c:1249
 msgid "Immediate"
 msgstr ""
 
@@ -939,11 +977,11 @@ msgstr ""
 msgid "Incompatible XKB server support\n"
 msgstr ""
 
-#: Programs/menu_prefs.c:1516
+#: Programs/menu_prefs.c:1765
 msgid "Information"
 msgstr ""
 
-#: Programs/menu_prefs.c:958
+#: Programs/menu_prefs.c:959
 msgid "Input Options"
 msgstr ""
 
@@ -951,15 +989,11 @@ msgstr ""
 msgid "Input Packets"
 msgstr ""
 
-#: Programs/config.c:774
+#: Programs/config.c:783
 #, c-format
 msgid "Install the %s service, and then exit."
 msgstr ""
 
-#: Programs/menu_prefs.c:1520
-msgid "Internal Parameters"
-msgstr ""
-
 #: Drivers/Screen/Android/screen.c:197
 msgid "Java class not found"
 msgstr ""
@@ -977,20 +1011,20 @@ msgstr ""
 msgid "Kalimba"
 msgstr ""
 
-#: Programs/config.c:1833
+#: Programs/config.c:1841
 msgid "Key Bindings"
 msgstr ""
 
-#: Programs/config.c:1275
+#: Programs/config.c:1283
 msgid "Key Help"
 msgstr ""
 
-#: Programs/config.c:1838
+#: Programs/config.c:1846
 #: Programs/ktb_list.c:737
 msgid "Key Table"
 msgstr ""
 
-#: Programs/menu_prefs.c:937
+#: Programs/menu_prefs.c:938
 msgid "Keyboard Enabled"
 msgstr ""
 
@@ -998,11 +1032,16 @@ msgstr ""
 msgid "Keyboard Key Events"
 msgstr ""
 
-#: Programs/menu_prefs.c:1044
+#: Programs/menu_prefs.c:1045
 msgid "Keyboard LED Alerts"
 msgstr ""
 
-#: Programs/menu_prefs.c:1026
+#: Programs/menu_prefs.c:1616
+msgid "Keyboard Properties"
+msgstr ""
+
+#: Programs/menu_prefs.c:1027
+#: Programs/menu_prefs.c:1611
 msgid "Keyboard Table"
 msgstr ""
 
@@ -1011,7 +1050,7 @@ msgstr ""
 msgid "Koto"
 msgstr ""
 
-#: Programs/config.c:3223
+#: Programs/config.c:3232
 msgid "Language"
 msgstr ""
 
@@ -1060,7 +1099,7 @@ msgstr ""
 msgid "Learn Mode"
 msgstr ""
 
-#: Programs/menu_prefs.c:1361
+#: Programs/menu_prefs.c:1362
 msgid "Left"
 msgstr ""
 
@@ -1068,15 +1107,15 @@ msgstr ""
 msgid "List each report's identifier and sizes."
 msgstr ""
 
-#: Programs/brltty-ktb.c:59
+#: Programs/brltty-ktb.c:60
 msgid "List key names."
 msgstr ""
 
-#: Programs/brltty-ktb.c:65
+#: Programs/brltty-ktb.c:66
 msgid "List key table in help screen format."
 msgstr ""
 
-#: Programs/brltty-ktb.c:71
+#: Programs/brltty-ktb.c:72
 msgid "List key table in reStructuredText format."
 msgstr ""
 
@@ -1092,65 +1131,82 @@ msgstr ""
 msgid "List the paths to a data file and those which it recursively includes."
 msgstr ""
 
-#: Programs/menu_prefs.c:1503
+#: Programs/menu_prefs.c:1531
+#: Programs/menu_prefs.c:1591
 msgid "Locale Directory"
 msgstr ""
 
-#: Programs/menu_prefs.c:1539
+#: Programs/menu_prefs.c:1785
 msgid "Log Categories"
 msgstr ""
 
-#: Programs/menu_prefs.c:1600
+#: Programs/menu_prefs.c:1697
+msgid "Log File"
+msgstr ""
+
+#: Programs/menu_prefs.c:1824
 msgid "Log Messages"
 msgstr ""
 
-#: Programs/config.c:384
+#: Programs/menu_prefs.c:1755
+msgid "Log Settings"
+msgstr ""
+
+#: Programs/config.c:383
 msgid "Log the versions of the core, API, and built-in drivers, and then exit."
 msgstr ""
 
-#: Programs/config.c:632
+#: Programs/menu_prefs.c:1702
+msgid "Log to Standard Error"
+msgstr ""
+
+#: Programs/config.c:631
 msgid "Log to standard error rather than to the system log."
 msgstr ""
 
-#: Programs/config.c:617
+#: Programs/config.c:616
 #, c-format
 msgid "Logging level (%s or one of {%s}) and/or log categories to enable (any combination of {%s}, each optionally prefixed by %s to disable)."
 msgstr ""
 
-#: Programs/menu_prefs.c:980
+#: Programs/menu_prefs.c:981
 msgid "Long Press Time"
 msgstr ""
 
-#: Programs/menu_prefs.c:747
-#: Programs/menu_prefs.c:1013
+#: Programs/menu_prefs.c:748
+#: Programs/menu_prefs.c:1014
 msgid "Low"
 msgstr ""
 
-#: Programs/menu_prefs.c:666
+#: Programs/menu_prefs.c:667
 msgid "Lower Left Dot"
 msgstr ""
 
-#: Programs/menu_prefs.c:667
+#: Programs/menu_prefs.c:668
 msgid "Lower Right Dot"
 msgstr ""
 
-#: Programs/menu_prefs.c:1060
+#: Programs/menu_prefs.c:1061
 msgid "MIDI"
 msgstr ""
 
-#: Programs/config.c:702
+#: Programs/config.c:701
 msgid "MIDI (Musical Instrument Digital Interface) device specifier."
 msgstr ""
 
-#: Programs/menu_prefs.c:1090
+#: Programs/menu_prefs.c:1691
+msgid "MIDI Device"
+msgstr ""
+
+#: Programs/menu_prefs.c:1091
 msgid "MIDI Instrument"
 msgstr ""
 
-#: Programs/menu_prefs.c:1080
+#: Programs/menu_prefs.c:1081
 msgid "MIDI Volume"
 msgstr ""
 
-#: Programs/menu_prefs.c:1463
+#: Programs/menu_prefs.c:1486
 msgid "Mailing List"
 msgstr ""
 
@@ -1191,17 +1247,17 @@ msgstr ""
 msgid "Match the vendor identifier (four hexadecimal digits)."
 msgstr ""
 
-#: Programs/menu_prefs.c:750
-#: Programs/menu_prefs.c:1016
+#: Programs/menu_prefs.c:751
+#: Programs/menu_prefs.c:1017
 msgid "Maximum"
 msgstr ""
 
-#: Programs/brltty-ctb.c:53
+#: Programs/brltty-ctb.c:54
 msgid "Maximum length of an output line."
 msgstr ""
 
-#: Programs/menu_prefs.c:748
-#: Programs/menu_prefs.c:1014
+#: Programs/menu_prefs.c:749
+#: Programs/menu_prefs.c:1015
 msgid "Medium"
 msgstr ""
 
@@ -1210,34 +1266,38 @@ msgstr ""
 msgid "Melodic Tom"
 msgstr ""
 
-#: Programs/menu_prefs.c:680
+#: Programs/menu_prefs.c:681
 msgid "Menu Options"
 msgstr ""
 
-#: Programs/config.c:662
+#: Programs/config.c:661
 msgid "Message hold timeout (in 10ms units)."
 msgstr ""
 
-#: Programs/menu_prefs.c:746
-#: Programs/menu_prefs.c:1012
+#: Programs/menu_prefs.c:747
+#: Programs/menu_prefs.c:1013
 msgid "Minimum"
 msgstr ""
 
-#: Programs/config.c:513
+#: Programs/config.c:512
 #, c-format
 msgid "Minimum screen content quality to autospeak (one of {%s})."
 msgstr ""
 
-#: Programs/menu_prefs.c:1333
+#: Programs/menu_prefs.c:1334
 msgid "Month Day Year"
 msgstr ""
 
+#: Programs/spk.c:281
+msgid "Most"
+msgstr ""
+
 #. xgettext: This is the name of MIDI musical instrument #11 (in the Chromatic Percussion group).
 #: Programs/midi.c:111
 msgid "Music Box"
 msgstr ""
 
-#: Programs/menu_prefs.c:1060
+#: Programs/menu_prefs.c:1061
 msgid "Musical Instrument Digital Interface"
 msgstr ""
 
@@ -1246,58 +1306,66 @@ msgstr ""
 msgid "Muted Trumpet"
 msgstr ""
 
-#: Programs/config.c:567
+#: Programs/config.c:566
 msgid "Name of or path to GUI keyboard table."
 msgstr ""
 
-#: Programs/config.c:471
+#: Programs/config.c:470
 msgid "Name of or path to attributes table."
 msgstr ""
 
-#: Programs/config.c:463
+#: Programs/config.c:462
 msgid "Name of or path to contraction table."
 msgstr ""
 
-#: Programs/config.c:576
+#: Programs/config.c:575
 msgid "Name of or path to default preferences file."
 msgstr ""
 
-#: Programs/config.c:543
+#: Programs/config.c:542
 msgid "Name of or path to keyboard table."
 msgstr ""
 
-#: Programs/config.c:499
+#: Programs/config.c:505
 msgid "Name of or path to speech input object."
 msgstr ""
 
-#: Programs/config.c:453
+#: Programs/config.c:452
 #, c-format
 msgid "Name of or path to text table (or %s)."
 msgstr ""
 
-#: Programs/menu_prefs.c:846
+#: Programs/menu_prefs.c:847
 msgid "Navigation Options"
 msgstr ""
 
-#: Programs/menu.c:523
+#: Programs/menu.c:504
 msgid "No"
 msgstr ""
 
-#: Programs/menu_prefs.c:721
+#: Programs/menu_prefs.c:1743
+msgid "No API"
+msgstr ""
+
+#: Programs/menu_prefs.c:722
 msgid "No Capitalization"
 msgstr ""
 
-#: Programs/menu_prefs.c:899
-#: Programs/menu_prefs.c:1212
-#: Programs/menu_prefs.c:1225
-#: Programs/menu_prefs.c:1238
-#: Programs/menu_prefs.c:1321
-#: Programs/menu_prefs.c:1360
-#: Programs/menu_prefs.c:1380
+#: Programs/menu_prefs.c:1712
+msgid "No Daemon"
+msgstr ""
+
+#: Programs/menu_prefs.c:900
+#: Programs/menu_prefs.c:1226
+#: Programs/menu_prefs.c:1239
+#: Programs/menu_prefs.c:1322
+#: Programs/menu_prefs.c:1361
+#: Programs/menu_prefs.c:1381
+#: Programs/spk.c:279
 msgid "None"
 msgstr ""
 
-#: Programs/menu_prefs.c:1515
+#: Programs/menu_prefs.c:1764
 msgid "Notice"
 msgstr ""
 
@@ -1311,15 +1379,15 @@ msgstr ""
 msgid "Ocarina"
 msgstr ""
 
-#: Programs/menu_prefs.c:962
+#: Programs/menu_prefs.c:963
 msgid "Off"
 msgstr ""
 
-#: Programs/config.c:1926
+#: Programs/config.c:1934
 msgid "Old Preferences File"
 msgstr ""
 
-#: Programs/menu_prefs.c:975
+#: Programs/menu_prefs.c:976
 msgid "On First Release"
 msgstr ""
 
@@ -1351,32 +1419,44 @@ msgstr ""
 msgid "Overdriven Guitar"
 msgstr ""
 
+#: Programs/menu_prefs.c:1561
+msgid "Override Preferences"
+msgstr ""
+
 #: Drivers/Braille/Iris/braille.c:1548
 msgid "PC mode"
 msgstr ""
 
-#: Programs/menu_prefs.c:1059
+#: Programs/menu_prefs.c:1060
 msgid "PCM"
 msgstr ""
 
-#: Programs/config.c:692
+#: Programs/config.c:691
 msgid "PCM (soundcard digital audio) device specifier."
 msgstr ""
 
-#: Programs/menu_prefs.c:1072
+#: Programs/menu_prefs.c:1684
+msgid "PCM Device"
+msgstr ""
+
+#: Programs/menu_prefs.c:1073
 msgid "PCM Volume"
 msgstr ""
 
+#: Programs/menu_prefs.c:1707
+msgid "PID File"
+msgstr ""
+
 #. xgettext: This is the description of the PASSPS2 command.
-#: Programs/cmds.auto.h:1503
+#: Programs/cmds.auto.h:1518
 msgid "PS/2 (set 3) keyboard scan code"
 msgstr ""
 
-#: Programs/menu_prefs.c:1453
+#: Programs/menu_prefs.c:1476
 msgid "Package Revision"
 msgstr ""
 
-#: Programs/menu_prefs.c:1448
+#: Programs/menu_prefs.c:1471
 msgid "Package Version"
 msgstr ""
 
@@ -1426,84 +1506,88 @@ msgstr ""
 msgid "Pan Flute"
 msgstr ""
 
-#: Programs/config.c:601
+#: Programs/config.c:600
 msgid "Parameters for the application programming interface."
 msgstr ""
 
-#: Programs/config.c:421
+#: Programs/config.c:420
 msgid "Parameters for the braille driver."
 msgstr ""
 
-#: Programs/config.c:654
+#: Programs/config.c:653
 msgid "Parameters for the privilege establishment stage."
 msgstr ""
 
-#: Programs/config.c:534
+#: Programs/config.c:533
 msgid "Parameters for the screen driver."
 msgstr ""
 
-#: Programs/config.c:491
+#: Programs/config.c:490
 msgid "Parameters for the speech driver."
 msgstr ""
 
-#: Programs/config.c:400
+#: Programs/config.c:399
 msgid "Path to default settings file."
 msgstr ""
 
-#: Programs/config.c:723
+#: Programs/config.c:722
 msgid "Path to directory containing drivers."
 msgstr ""
 
+#: Programs/config.c:732
+msgid "Path to directory containing helper commands."
+msgstr ""
+
 #: Programs/brltest.c:65
-#: Programs/brltty-atb.c:35
-#: Programs/brltty-ctb.c:96
-#: Programs/brltty-ktb.c:80
-#: Programs/config.c:713
+#: Programs/brltty-atb.c:36
+#: Programs/brltty-ctb.c:97
+#: Programs/brltty-ktb.c:81
+#: Programs/config.c:712
 msgid "Path to directory containing tables."
 msgstr ""
 
-#: Programs/brltty-ttb.c:186
+#: Programs/brltty-ttb.c:187
 msgid "Path to directory containing text tables."
 msgstr ""
 
-#: Programs/brltty-ktb.c:89
+#: Programs/brltty-ktb.c:90
 msgid "Path to directory for loading drivers."
 msgstr ""
 
-#: Programs/brltty-trtxt.c:79
+#: Programs/brltty-trtxt.c:80
 msgid "Path to directory for text tables."
 msgstr ""
 
 #: Programs/brltest.c:83
-#: Programs/config.c:743
+#: Programs/config.c:752
 msgid "Path to directory which can be written to."
 msgstr ""
 
-#: Programs/config.c:733
+#: Programs/config.c:742
 msgid "Path to directory which contains files that can be updated."
 msgstr ""
 
-#: Programs/config.c:752
+#: Programs/config.c:761
 msgid "Path to directory which contains message localizations."
 msgstr ""
 
-#: Programs/brltty-trtxt.c:50
+#: Programs/brltty-trtxt.c:51
 msgid "Path to input text table."
 msgstr ""
 
-#: Programs/config.c:626
+#: Programs/config.c:625
 msgid "Path to log file."
 msgstr ""
 
-#: Programs/brltty-trtxt.c:58
+#: Programs/brltty-trtxt.c:59
 msgid "Path to output text table."
 msgstr ""
 
-#: Programs/config.c:761
+#: Programs/config.c:770
 msgid "Path to process identifier file."
 msgstr ""
 
-#: Programs/config.c:683
+#: Programs/config.c:682
 msgid "Patterns that match command prompts."
 msgstr ""
 
@@ -1533,6 +1617,10 @@ msgstr ""
 msgid "Pipe"
 msgstr ""
 
+#: Programs/spk.c:263
+msgid "Pitch"
+msgstr ""
+
 #. xgettext: This is the name of MIDI musical instrument #46 (in the Strings group).
 #: Programs/midi.c:220
 msgid "Pizzicato Strings"
@@ -1542,7 +1630,8 @@ msgstr ""
 msgid "Powerdown"
 msgstr ""
 
-#: Programs/menu_prefs.c:1483
+#: Programs/menu_prefs.c:1496
+#: Programs/menu_prefs.c:1556
 msgid "Preferences File"
 msgstr ""
 
@@ -1550,22 +1639,46 @@ msgstr ""
 msgid "Preferences Menu"
 msgstr ""
 
-#: Programs/menu_prefs.c:1434
+#: Programs/menu_prefs.c:1717
+msgid "Privilege Parameters"
+msgstr ""
+
+#: Programs/menu_prefs.c:1435
 msgid "Profiles"
 msgstr ""
 
-#: Programs/config.c:551
+#: Programs/menu_prefs.c:1537
+msgid "Program Options"
+msgstr ""
+
+#: Programs/menu_prefs.c:1737
+msgid "Prompt Patterns"
+msgstr ""
+
+#: Programs/config.c:550
 msgid "Properties of eligible keyboards."
 msgstr ""
 
-#: Programs/menu_prefs.c:952
+#: Programs/spk.c:299
+msgid "Punctuation"
+msgstr ""
+
+#: Programs/menu_prefs.c:953
 msgid "Quick Space"
 msgstr ""
 
-#: Programs/menu_prefs.c:1229
+#: Programs/menu_prefs.c:1662
+msgid "Quiet If No Braille"
+msgstr ""
+
+#: Programs/menu_prefs.c:1230
 msgid "Raise Pitch"
 msgstr ""
 
+#: Programs/spk.c:237
+msgid "Rate"
+msgstr ""
+
 #: Programs/brltty-hid.c:181
 msgid "Read (get) a feature report (two hexadecimal digits)."
 msgstr ""
@@ -1574,7 +1687,7 @@ msgstr ""
 msgid "Read (get) an input report (two hexadecimal digits)."
 msgstr ""
 
-#: Programs/config.c:390
+#: Programs/config.c:389
 msgid "Recognize environment variables."
 msgstr ""
 
@@ -1593,11 +1706,15 @@ msgstr ""
 msgid "Reed Organ"
 msgstr ""
 
-#: Programs/brltty-ctb.c:59
+#: Programs/brltty-ctb.c:60
 msgid "Reformat input."
 msgstr ""
 
-#: Programs/config.c:443
+#: Programs/menu_prefs.c:1646
+msgid "Release Device"
+msgstr ""
+
+#: Programs/config.c:442
 msgid "Release braille device when screen or window is unreadable."
 msgstr ""
 
@@ -1605,40 +1722,40 @@ msgstr ""
 msgid "Remain a foreground process"
 msgstr ""
 
-#: Programs/config.c:638
+#: Programs/config.c:637
 msgid "Remain a foreground process."
 msgstr ""
 
-#: Programs/brltty-trtxt.c:64
+#: Programs/brltty-trtxt.c:65
 msgid "Remove dots seven and eight."
 msgstr ""
 
-#: Programs/config.c:781
+#: Programs/config.c:790
 #, c-format
 msgid "Remove the %s service, and then exit."
 msgstr ""
 
-#: Programs/brltty-ktb.c:53
+#: Programs/brltty-ktb.c:54
 msgid "Report problems with the key table."
 msgstr ""
 
-#: Programs/brltty-ttb.c:176
+#: Programs/brltty-ttb.c:177
 msgid "Report the characters within the current screen font that aren't defined within the text table."
 msgstr ""
 
-#: Programs/menu_prefs.c:868
+#: Programs/menu_prefs.c:869
 msgid "Rest of Line"
 msgstr ""
 
-#: Programs/menu_prefs.c:1582
+#: Programs/menu_prefs.c:1449
 msgid "Restart Braille Driver"
 msgstr ""
 
-#: Programs/menu_prefs.c:1594
+#: Programs/menu_prefs.c:1461
 msgid "Restart Screen Driver"
 msgstr ""
 
-#: Programs/menu_prefs.c:1588
+#: Programs/menu_prefs.c:1455
 msgid "Restart Speech Driver"
 msgstr ""
 
@@ -1647,7 +1764,7 @@ msgstr ""
 msgid "Reverse Cymbal"
 msgstr ""
 
-#: Programs/menu_prefs.c:1362
+#: Programs/menu_prefs.c:1363
 msgid "Right"
 msgstr ""
 
@@ -1656,58 +1773,66 @@ msgstr ""
 msgid "Rock Organ"
 msgstr ""
 
-#: Programs/brltty-pty.c:389
+#: Programs/brltty-pty.c:418
 msgid "Run a shell or terminal manager within a pty (virtual terminal) and export its screen via a shared memory segment so that brltty can read it via its Terminal Emulator screen driver."
 msgstr ""
 
-#: Programs/menu_prefs.c:675
+#: Programs/menu_prefs.c:676
 msgid "Save on Exit"
 msgstr ""
 
 #. "cap" here, used during speech output, is short for "capital".
 #. It is spoken just before an uppercase letter, e.g. "cap A".
-#: Programs/menu_prefs.c:1228
+#: Programs/menu_prefs.c:1229
 msgid "Say Cap"
 msgstr ""
 
-#: Programs/menu_prefs.c:1252
+#: Programs/menu_prefs.c:1253
 msgid "Say Line Mode"
 msgstr ""
 
-#: Programs/menu_prefs.c:1239
+#: Programs/menu_prefs.c:1240
 msgid "Say Space"
 msgstr ""
 
-#: Programs/menu_prefs.c:781
+#: Programs/menu_prefs.c:782
 msgid "Screen Cursor Blink Period"
 msgstr ""
 
-#: Programs/menu_prefs.c:789
+#: Programs/menu_prefs.c:790
 msgid "Screen Cursor Percent Visible"
 msgstr ""
 
-#: Programs/menu_prefs.c:769
+#: Programs/menu_prefs.c:770
 msgid "Screen Cursor Style"
 msgstr ""
 
+#: Programs/menu_prefs.c:1673
+msgid "Screen Driver"
+msgstr ""
+
 #: Programs/log.c:167
 msgid "Screen Driver Events"
 msgstr ""
 
-#: Programs/menu_prefs.c:550
+#: Programs/menu_prefs.c:551
 msgid "Screen Number"
 msgstr ""
 
-#: Programs/config.c:524
+#: Programs/menu_prefs.c:1678
+msgid "Screen Parameters"
+msgstr ""
+
+#: Programs/config.c:523
 #, c-format
 msgid "Screen driver code (%s, %s, or one of {%s})."
 msgstr ""
 
-#: Programs/config.c:877
+#: Programs/config.c:886
 msgid "Screen reader for those who use a braille device."
 msgstr ""
 
-#: Programs/menu_prefs.c:893
+#: Programs/menu_prefs.c:894
 msgid "Scroll-aware Cursor Navigation"
 msgstr ""
 
@@ -1739,31 +1864,31 @@ msgstr ""
 msgid "Shanai"
 msgstr ""
 
-#: Programs/menu_prefs.c:688
+#: Programs/menu_prefs.c:689
 msgid "Show Advanced Submenus"
 msgstr ""
 
-#: Programs/menu_prefs.c:693
+#: Programs/menu_prefs.c:694
 msgid "Show All Items"
 msgstr ""
 
-#: Programs/menu_prefs.c:797
+#: Programs/menu_prefs.c:798
 msgid "Show Attributes"
 msgstr ""
 
-#: Programs/menu_prefs.c:764
+#: Programs/menu_prefs.c:765
 msgid "Show Screen Cursor"
 msgstr ""
 
-#: Programs/menu_prefs.c:1315
+#: Programs/menu_prefs.c:1316
 msgid "Show Seconds"
 msgstr ""
 
-#: Programs/menu_prefs.c:1257
+#: Programs/menu_prefs.c:1258
 msgid "Show Speech Cursor"
 msgstr ""
 
-#: Programs/menu_prefs.c:683
+#: Programs/menu_prefs.c:684
 msgid "Show Submenu Sizes"
 msgstr ""
 
@@ -1797,15 +1922,15 @@ msgstr ""
 msgid "Sitar"
 msgstr ""
 
-#: Programs/menu_prefs.c:860
+#: Programs/menu_prefs.c:861
 msgid "Skip Blank Braille Windows"
 msgstr ""
 
-#: Programs/menu_prefs.c:854
+#: Programs/menu_prefs.c:855
 msgid "Skip Identical Lines"
 msgstr ""
 
-#: Programs/menu_prefs.c:871
+#: Programs/menu_prefs.c:872
 msgid "Skip Which Blank Braille Windows"
 msgstr ""
 
@@ -1819,15 +1944,15 @@ msgstr ""
 msgid "Slap Bass 2"
 msgstr ""
 
-#: Programs/menu_prefs.c:1345
+#: Programs/menu_prefs.c:1346
 msgid "Slash"
 msgstr ""
 
-#: Programs/menu_prefs.c:876
+#: Programs/menu_prefs.c:877
 msgid "Sliding Braille Window"
 msgstr ""
 
-#: Programs/menu_prefs.c:1213
+#: Programs/spk.c:280
 msgid "Some"
 msgstr ""
 
@@ -1842,63 +1967,67 @@ msgstr ""
 msgid "Sound Effects"
 msgstr ""
 
-#: Programs/menu_prefs.c:561
-#: Programs/menu_prefs.c:1381
+#: Programs/menu_prefs.c:562
+#: Programs/menu_prefs.c:1382
 msgid "Space"
 msgstr ""
 
-#: Programs/menu_prefs.c:1174
+#: Programs/menu_prefs.c:1175
 msgid "Speak Completed Words"
 msgstr ""
 
-#: Programs/menu_prefs.c:1162
+#: Programs/menu_prefs.c:1163
 msgid "Speak Deleted Characters"
 msgstr ""
 
-#: Programs/menu_prefs.c:1144
+#: Programs/menu_prefs.c:1145
 msgid "Speak Empty Line"
 msgstr ""
 
-#: Programs/menu_prefs.c:1156
+#: Programs/menu_prefs.c:1157
 msgid "Speak Inserted Characters"
 msgstr ""
 
-#: Programs/menu_prefs.c:1117
+#: Programs/menu_prefs.c:1118
 msgid "Speak Key Context"
 msgstr ""
 
-#: Programs/menu_prefs.c:1180
+#: Programs/menu_prefs.c:1181
 msgid "Speak Line Indent"
 msgstr ""
 
-#: Programs/menu_prefs.c:1122
+#: Programs/menu_prefs.c:1123
 msgid "Speak Modifier Key"
 msgstr ""
 
-#: Programs/menu_prefs.c:1168
+#: Programs/menu_prefs.c:1169
 msgid "Speak Replaced Characters"
 msgstr ""
 
-#: Programs/menu_prefs.c:1150
+#: Programs/menu_prefs.c:1151
 msgid "Speak Selected Character"
 msgstr ""
 
-#: Programs/menu_prefs.c:1138
+#: Programs/menu_prefs.c:1139
 msgid "Speak Selected Line"
 msgstr ""
 
-#: Programs/menu_prefs.c:1274
+#: Programs/menu_prefs.c:1275
 msgid "Speech Cursor Blink Period"
 msgstr ""
 
-#: Programs/menu_prefs.c:1282
+#: Programs/menu_prefs.c:1283
 msgid "Speech Cursor Percent Visible"
 msgstr ""
 
-#: Programs/menu_prefs.c:1262
+#: Programs/menu_prefs.c:1263
 msgid "Speech Cursor Style"
 msgstr ""
 
+#: Programs/menu_prefs.c:1652
+msgid "Speech Driver"
+msgstr ""
+
 #: Programs/log.c:161
 msgid "Speech Driver Events"
 msgstr ""
@@ -1907,85 +2036,105 @@ msgstr ""
 msgid "Speech Events"
 msgstr ""
 
-#: Programs/menu_prefs.c:1187
+#: Programs/menu_prefs.c:1667
+msgid "Speech Input"
+msgstr ""
+
+#: Programs/menu_prefs.c:1188
 msgid "Speech Options"
 msgstr ""
 
-#: Programs/menu_prefs.c:1204
+#: Programs/menu_prefs.c:1657
+msgid "Speech Parameters"
+msgstr ""
+
+#: Programs/menu_prefs.c:1205
 msgid "Speech Pitch"
 msgstr ""
 
-#: Programs/menu_prefs.c:1217
+#: Programs/menu_prefs.c:1218
 msgid "Speech Punctuation"
 msgstr ""
 
-#: Programs/menu_prefs.c:1197
+#: Programs/menu_prefs.c:1198
 msgid "Speech Rate"
 msgstr ""
 
-#: Programs/menu_prefs.c:1232
+#: Programs/menu_prefs.c:1233
 msgid "Speech Uppercase Indicator"
 msgstr ""
 
-#: Programs/menu_prefs.c:1190
+#: Programs/menu_prefs.c:1191
 msgid "Speech Volume"
 msgstr ""
 
-#: Programs/menu_prefs.c:1242
+#: Programs/menu_prefs.c:1243
 msgid "Speech Whitespace Indicator"
 msgstr ""
 
-#: Programs/config.c:481
+#: Programs/config.c:480
 #, c-format
 msgid "Speech driver code (%s, %s, or one of {%s})."
 msgstr ""
 
-#: Programs/menu_prefs.c:1529
+#: Programs/menu_prefs.c:1775
 msgid "Standard Error Log Level"
 msgstr ""
 
-#: Programs/menu_prefs.c:928
+#: Programs/menu_prefs.c:1727
+msgid "Start Message"
+msgstr ""
+
+#: Programs/menu_prefs.c:929
 msgid "Start Selection with Routing Key"
 msgstr ""
 
-#: Programs/menu_prefs.c:551
+#: Programs/menu_prefs.c:552
 msgid "State Dots"
 msgstr ""
 
-#: Programs/menu_prefs.c:552
+#: Programs/menu_prefs.c:553
 msgid "State Letter"
 msgstr ""
 
-#: Programs/menu_prefs.c:1356
+#: Programs/menu_prefs.c:1357
 msgid "Status Cells"
 msgstr ""
 
-#: Programs/menu_prefs.c:1372
+#: Programs/menu_prefs.c:1373
 msgid "Status Count"
 msgstr ""
 
-#: Programs/menu_prefs.c:565
+#: Programs/menu_prefs.c:566
 msgid "Status Field"
 msgstr ""
 
-#: Programs/menu_prefs.c:1365
+#: Programs/menu_prefs.c:1366
 msgid "Status Position"
 msgstr ""
 
-#: Programs/menu_prefs.c:1387
+#: Programs/menu_prefs.c:1388
 msgid "Status Separator"
 msgstr ""
 
-#: Programs/menu_prefs.c:1383
+#: Programs/menu_prefs.c:1384
 msgid "Status Side"
 msgstr ""
 
+#: Programs/menu_prefs.c:1722
+msgid "Stay Privileged"
+msgstr ""
+
 #. xgettext: This is the name of MIDI musical instrument #115 (in the Percussive group).
 #: Programs/midi.c:437
 msgid "Steel Drums"
 msgstr ""
 
-#: Programs/config.c:767
+#: Programs/menu_prefs.c:1732
+msgid "Stop Message"
+msgstr ""
+
+#: Programs/config.c:776
 #, c-format
 msgid "Stop an existing instance of %s, and then exit."
 msgstr ""
@@ -2006,11 +2155,11 @@ msgstr ""
 msgid "Strings"
 msgstr ""
 
-#: Programs/menu_prefs.c:723
+#: Programs/menu_prefs.c:724
 msgid "Superimpose Dot 7"
 msgstr ""
 
-#: Programs/config.c:609
+#: Programs/config.c:608
 msgid "Suppress start-up messages."
 msgstr ""
 
@@ -2077,11 +2226,12 @@ msgstr ""
 msgid "SynthStrings 2"
 msgstr ""
 
-#: Programs/menu_prefs.c:1524
+#: Programs/menu_prefs.c:1770
 msgid "System Log Level"
 msgstr ""
 
-#: Programs/menu_prefs.c:1498
+#: Programs/menu_prefs.c:1506
+#: Programs/menu_prefs.c:1566
 msgid "Tables Directory"
 msgstr ""
 
@@ -2113,11 +2263,11 @@ msgstr ""
 msgid "Test a braille driver."
 msgstr ""
 
-#: Programs/scrtest.c:137
+#: Programs/scrtest.c:138
 msgid "Test a screen driver."
 msgstr ""
 
-#: Programs/spktest.c:115
+#: Programs/spktest.c:116
 msgid "Test a speech driver."
 msgstr ""
 
@@ -2129,19 +2279,20 @@ msgstr ""
 msgid "Test supported CRC (Cyclic Redundancy Check) checksum algorithms."
 msgstr ""
 
-#: Programs/menu_prefs.c:761
+#: Programs/menu_prefs.c:762
 msgid "Text Indicators"
 msgstr ""
 
-#: Programs/menu_prefs.c:1384
+#: Programs/menu_prefs.c:1385
 msgid "Text Side"
 msgstr ""
 
-#: Programs/menu_prefs.c:1412
+#: Programs/menu_prefs.c:1413
+#: Programs/menu_prefs.c:1596
 msgid "Text Table"
 msgstr ""
 
-#: Programs/brltty-ctb.c:80
+#: Programs/brltty-ctb.c:81
 msgid "Text table."
 msgstr ""
 
@@ -2153,27 +2304,27 @@ msgstr ""
 msgid "The input timeout (in seconds)."
 msgstr ""
 
-#: Programs/config.c:669
+#: Programs/config.c:668
 msgid "The text to be shown when the braille driver starts and to be spoken when the speech driver starts."
 msgstr ""
 
-#: Programs/config.c:676
+#: Programs/config.c:675
 msgid "The text to be shown when the braille driver stops."
 msgstr ""
 
-#: Programs/menu_prefs.c:553
+#: Programs/menu_prefs.c:554
 msgid "Time"
 msgstr ""
 
-#: Programs/menu_prefs.c:1300
+#: Programs/menu_prefs.c:1301
 msgid "Time Format"
 msgstr ""
 
-#: Programs/menu_prefs.c:1292
+#: Programs/menu_prefs.c:1293
 msgid "Time Presentation"
 msgstr ""
 
-#: Programs/menu_prefs.c:1310
+#: Programs/menu_prefs.c:1311
 msgid "Time Separator"
 msgstr ""
 
@@ -2188,35 +2339,35 @@ msgstr ""
 msgid "Tinkle Bell"
 msgstr ""
 
-#: Programs/menu_prefs.c:1578
+#: Programs/menu_prefs.c:1445
 msgid "Tools"
 msgstr ""
 
-#: Programs/menu_prefs.c:1005
+#: Programs/menu_prefs.c:1006
 msgid "Touch Navigation"
 msgstr ""
 
-#: Programs/menu_prefs.c:1019
+#: Programs/menu_prefs.c:1020
 msgid "Touch Sensitivity"
 msgstr ""
 
-#: Programs/menu_prefs.c:917
+#: Programs/menu_prefs.c:918
 msgid "Track Screen Pointer"
 msgstr ""
 
-#: Programs/menu_prefs.c:911
+#: Programs/menu_prefs.c:912
 msgid "Track Screen Scroll"
 msgstr ""
 
-#: Programs/brltty-trtxt.c:239
+#: Programs/brltty-trtxt.c:240
 msgid "Translate one binary braille representation to another."
 msgstr ""
 
-#: Programs/brltty-morse.c:136
+#: Programs/brltty-morse.c:137
 msgid "Translate text into Morse Code tones."
 msgstr ""
 
-#: Programs/menu_prefs.c:943
+#: Programs/menu_prefs.c:944
 msgid "Translated via Text Table"
 msgstr ""
 
@@ -2246,11 +2397,11 @@ msgstr ""
 msgid "Tubular Bells"
 msgstr ""
 
-#: Programs/menu_prefs.c:1064
+#: Programs/menu_prefs.c:1065
 msgid "Tune Device"
 msgstr ""
 
-#: Programs/menu_prefs.c:947
+#: Programs/menu_prefs.c:948
 msgid "Typing Mode"
 msgstr ""
 
@@ -2258,7 +2409,7 @@ msgstr ""
 msgid "USB I/O"
 msgstr ""
 
-#: Programs/menu_prefs.c:664
+#: Programs/menu_prefs.c:665
 msgid "Underline"
 msgstr ""
 
@@ -2266,7 +2417,8 @@ msgstr ""
 msgid "Unfrozen"
 msgstr ""
 
-#: Programs/menu_prefs.c:1478
+#: Programs/menu_prefs.c:1521
+#: Programs/menu_prefs.c:1581
 msgid "Updatable Directory"
 msgstr ""
 
@@ -2274,7 +2426,7 @@ msgstr ""
 msgid "Update Events"
 msgstr ""
 
-#: Programs/menu_prefs.c:722
+#: Programs/menu_prefs.c:723
 msgid "Use Capital Sign"
 msgstr ""
 
@@ -2299,11 +2451,15 @@ msgstr ""
 msgid "Voice Oohs"
 msgstr ""
 
-#: Programs/menu_prefs.c:1514
+#: Programs/spk.c:211
+msgid "Volume"
+msgstr ""
+
+#: Programs/menu_prefs.c:1763
 msgid "Warning"
 msgstr ""
 
-#: Programs/menu_prefs.c:1458
+#: Programs/menu_prefs.c:1481
 msgid "Web Site"
 msgstr ""
 
@@ -2312,16 +2468,16 @@ msgstr ""
 msgid "Whistle"
 msgstr ""
 
-#: Programs/menu_prefs.c:543
+#: Programs/menu_prefs.c:544
 msgid "Window Column"
 msgstr ""
 
-#: Programs/menu_prefs.c:542
-#: Programs/menu_prefs.c:558
+#: Programs/menu_prefs.c:543
+#: Programs/menu_prefs.c:559
 msgid "Window Coordinates"
 msgstr ""
 
-#: Programs/menu_prefs.c:544
+#: Programs/menu_prefs.c:545
 msgid "Window Row"
 msgstr ""
 
@@ -2330,11 +2486,12 @@ msgstr ""
 msgid "Woodblock"
 msgstr ""
 
-#: Programs/menu_prefs.c:849
+#: Programs/menu_prefs.c:850
 msgid "Word Wrap"
 msgstr ""
 
-#: Programs/menu_prefs.c:1488
+#: Programs/menu_prefs.c:1526
+#: Programs/menu_prefs.c:1586
 msgid "Writable Directory"
 msgstr ""
 
@@ -2358,7 +2515,7 @@ msgstr ""
 msgid "Write the hexadecimal array representation of a compiled table."
 msgstr ""
 
-#: Programs/config.c:788
+#: Programs/config.c:797
 msgid "Write the start-up logs, and then exit."
 msgstr ""
 
@@ -2366,15 +2523,15 @@ msgstr ""
 msgid "X display to connect to"
 msgstr ""
 
-#: Programs/pgmprivs_linux.c:1951
+#: Programs/pgmprivs_linux.c:1953
 msgid "XDG runtime directory access problem"
 msgstr ""
 
-#: Programs/pgmprivs_linux.c:1933
+#: Programs/pgmprivs_linux.c:1935
 msgid "XDG runtime directory created"
 msgstr ""
 
-#: Programs/pgmprivs_linux.c:1928
+#: Programs/pgmprivs_linux.c:1930
 msgid "XDG runtime directory exists"
 msgstr ""
 
@@ -2387,7 +2544,7 @@ msgid "XFree(wm_name) for change"
 msgstr ""
 
 #. xgettext: This is the description of the PASSXT command.
-#: Programs/cmds.auto.h:1495
+#: Programs/cmds.auto.h:1510
 msgid "XT (set 1) keyboard scan code"
 msgstr ""
 
@@ -2396,11 +2553,11 @@ msgstr ""
 msgid "Xylophone"
 msgstr ""
 
-#: Programs/menu_prefs.c:1332
+#: Programs/menu_prefs.c:1333
 msgid "Year Month Day"
 msgstr ""
 
-#: Programs/menu.c:524
+#: Programs/menu.c:505
 msgid "Yes"
 msgstr ""
 
@@ -2408,7 +2565,7 @@ msgstr ""
 msgid "[host][:port]"
 msgstr ""
 
-#: Programs/menu_prefs.c:665
+#: Programs/menu_prefs.c:666
 msgid "all dots"
 msgstr ""
 
@@ -2417,12 +2574,12 @@ msgid "and"
 msgstr ""
 
 #. xgettext: This is the description of the CLIP_APPEND command.
-#: Programs/cmds.auto.h:1353
+#: Programs/cmds.auto.h:1368
 msgid "append characters to clipboard"
 msgstr ""
 
 #. xgettext: This is the description of the CLIP_ADD command.
-#: Programs/cmds.auto.h:1230
+#: Programs/cmds.auto.h:1245
 msgid "append to clipboard from character"
 msgstr ""
 
@@ -2431,7 +2588,7 @@ msgid "at cursor"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_BACKSPACE command.
-#: Programs/cmds.auto.h:1559
+#: Programs/cmds.auto.h:1574
 msgid "backspace key"
 msgstr ""
 
@@ -2441,7 +2598,7 @@ msgid "battery low"
 msgstr ""
 
 #. xgettext: This is the description of the SELECTVT command.
-#: Programs/cmds.auto.h:1453
+#: Programs/cmds.auto.h:1468
 msgid "bind to specific virtual terminal"
 msgstr ""
 
@@ -2460,11 +2617,11 @@ msgstr ""
 msgid "black"
 msgstr ""
 
-#: Programs/update.c:1021
+#: Programs/update.c:1022
 msgid "blank"
 msgstr ""
 
-#: Programs/core.c:1157
+#: Programs/core.c:1158
 msgid "blank line"
 msgstr ""
 
@@ -2477,7 +2634,7 @@ msgstr ""
 msgid "blue"
 msgstr ""
 
-#: Programs/config.c:3104
+#: Programs/config.c:3113
 #, c-format
 msgid "braille device not specified"
 msgstr ""
@@ -2487,11 +2644,11 @@ msgstr ""
 msgid "braille display temporarily unavailable"
 msgstr ""
 
-#: Programs/config.c:1942
+#: Programs/config.c:1950
 msgid "braille driver not loadable"
 msgstr ""
 
-#: Programs/config.c:2203
+#: Programs/config.c:2211
 msgid "braille driver restarting"
 msgstr ""
 
@@ -2504,7 +2661,7 @@ msgid "braille released"
 msgstr ""
 
 #. xgettext: This is the description of the ROUTE command.
-#: Programs/cmds.auto.h:1214
+#: Programs/cmds.auto.h:1229
 msgid "bring screen cursor to character"
 msgstr ""
 
@@ -2514,7 +2671,7 @@ msgid "bring screen cursor to current line"
 msgstr ""
 
 #. xgettext: This is the description of the ROUTE_LINE command.
-#: Programs/cmds.auto.h:1411
+#: Programs/cmds.auto.h:1426
 msgid "bring screen cursor to line"
 msgstr ""
 
@@ -2524,7 +2681,7 @@ msgid "bring screen cursor to speech cursor"
 msgstr ""
 
 #. xgettext: This is the description of the ROUTE_SPEECH command.
-#: Programs/cmds.auto.h:1445
+#: Programs/cmds.auto.h:1460
 msgid "bring speech cursor to character"
 msgstr ""
 
@@ -2566,7 +2723,7 @@ msgstr ""
 msgid "cannot compile contraction table"
 msgstr ""
 
-#: Programs/config.c:1844
+#: Programs/config.c:1852
 msgid "cannot compile key table"
 msgstr ""
 
@@ -2589,7 +2746,7 @@ msgstr ""
 msgid "cannot connect to display %s\n"
 msgstr ""
 
-#: Programs/file.c:437
+#: Programs/file.c:468
 msgid "cannot create directory"
 msgstr ""
 
@@ -2598,8 +2755,8 @@ msgstr ""
 msgid "cannot determine program directory"
 msgstr ""
 
-#: Programs/config.c:3062
-#: Programs/menu.c:618
+#: Programs/config.c:3070
+#: Programs/menu.c:601
 msgid "cannot determine working directory"
 msgstr ""
 
@@ -2607,10 +2764,6 @@ msgstr ""
 msgid "cannot find procedure"
 msgstr ""
 
-#: Programs/program.c:165
-msgid "cannot fix install path"
-msgstr ""
-
 #: Programs/xbrlapi.c:285
 msgid "cannot get tty\n"
 msgstr ""
@@ -2620,7 +2773,7 @@ msgstr ""
 msgid "cannot get tty %d\n"
 msgstr ""
 
-#: Programs/file.c:576
+#: Programs/file.c:592
 msgid "cannot get working directory"
 msgstr ""
 
@@ -2649,19 +2802,19 @@ msgstr ""
 msgid "cannot load text table"
 msgstr ""
 
-#: Programs/file.c:426
+#: Programs/file.c:457
 msgid "cannot make world writable"
 msgstr ""
 
-#: Programs/config.c:1277
+#: Programs/config.c:1285
 msgid "cannot open key help"
 msgstr ""
 
-#: Programs/program.c:289
+#: Programs/program.c:256
 msgid "cannot open process identifier file"
 msgstr ""
 
-#: Programs/menu.c:616
+#: Programs/menu.c:599
 msgid "cannot open working directory"
 msgstr ""
 
@@ -2674,8 +2827,8 @@ msgstr ""
 msgid "cannot set focus to %#010x\n"
 msgstr ""
 
-#: Programs/file.c:590
-#: Programs/menu.c:605
+#: Programs/file.c:606
+#: Programs/menu.c:588
 msgid "cannot set working directory"
 msgstr ""
 
@@ -2685,12 +2838,12 @@ msgstr ""
 
 #. "cap" here, used during speech output, is short for "capital".
 #. It is spoken just before an uppercase letter, e.g. "cap A".
-#: Programs/core.c:1086
+#: Programs/core.c:1087
 msgid "cap"
 msgstr ""
 
-#: Programs/menu_prefs.c:888
-#: Programs/menu_prefs.c:1373
+#: Programs/menu_prefs.c:889
+#: Programs/menu_prefs.c:1374
 msgid "cells"
 msgstr ""
 
@@ -2698,7 +2851,7 @@ msgstr ""
 msgid "changes discarded"
 msgstr ""
 
-#: Programs/brltty-ktb.c:290
+#: Programs/brltty-ktb.c:291
 msgid "check a key table, list the key naems it can use, or write the key bindings it defines in useful formats."
 msgstr ""
 
@@ -2712,11 +2865,11 @@ msgstr ""
 msgid "clear the text selection"
 msgstr ""
 
-#: Programs/cmd_speech.c:501
+#: Programs/cmd_speech.c:515
 msgid "column"
 msgstr ""
 
-#: Programs/brltty-pty.c:240
+#: Programs/brltty-pty.c:260
 msgid "command not found"
 msgstr ""
 
@@ -2733,12 +2886,12 @@ msgstr ""
 msgid "console not in use"
 msgstr ""
 
-#: Programs/menu_prefs.c:1058
+#: Programs/menu_prefs.c:1059
 msgid "console tone generator"
 msgstr ""
 
 #. xgettext: This is the description of the CLIP_COPY command.
-#: Programs/cmds.auto.h:1345
+#: Programs/cmds.auto.h:1360
 msgid "copy characters to clipboard"
 msgstr ""
 
@@ -2747,32 +2900,32 @@ msgstr ""
 msgid "copy selected text to host clipboard"
 msgstr ""
 
-#: Programs/config.c:660
+#: Programs/config.c:659
 msgid "csecs"
 msgstr ""
 
 #. xgettext: This is the description of the TOUCH_AT command.
-#: Programs/cmds.auto.h:1519
+#: Programs/cmds.auto.h:1534
 msgid "current reading location"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_CURSOR_DOWN command.
-#: Programs/cmds.auto.h:1599
+#: Programs/cmds.auto.h:1614
 msgid "cursor-down key"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_CURSOR_LEFT command.
-#: Programs/cmds.auto.h:1575
+#: Programs/cmds.auto.h:1590
 msgid "cursor-left key"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_CURSOR_RIGHT command.
-#: Programs/cmds.auto.h:1583
+#: Programs/cmds.auto.h:1598
 msgid "cursor-right key"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_CURSOR_UP command.
-#: Programs/cmds.auto.h:1591
+#: Programs/cmds.auto.h:1606
 msgid "cursor-up key"
 msgstr ""
 
@@ -2786,6 +2939,11 @@ msgstr ""
 msgid "cyan"
 msgstr ""
 
+#. xgettext: This is the description of the SPK_PUNCT_LEVEL command.
+#: Programs/cmds.auto.h:1220
+msgid "cycle speech punctuation level"
+msgstr ""
+
 #. xgettext: This is the description of the ALTGR command.
 #: Programs/cmds.auto.h:894
 msgid "cycle the AltGr (Right Alt) sticky input modifier (next, on, off)"
@@ -2837,12 +2995,12 @@ msgid "decrease speaking volume"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_DELETE command.
-#: Programs/cmds.auto.h:1647
+#: Programs/cmds.auto.h:1662
 msgid "delete key"
 msgstr ""
 
 #. xgettext: This is the description of the DESCCHAR command.
-#: Programs/cmds.auto.h:1282
+#: Programs/cmds.auto.h:1297
 msgid "describe character"
 msgstr ""
 
@@ -2851,23 +3009,24 @@ msgstr ""
 msgid "describe current character"
 msgstr ""
 
-#: Programs/config.c:690
-#: Programs/config.c:700
+#: Programs/config.c:689
+#: Programs/config.c:699
 msgid "device"
 msgstr ""
 
 #: Programs/brltest.c:61
 #: Programs/brltest.c:79
-#: Programs/brltty-atb.c:31
-#: Programs/brltty-ctb.c:92
-#: Programs/brltty-ktb.c:76
-#: Programs/brltty-ktb.c:85
-#: Programs/brltty-trtxt.c:75
-#: Programs/config.c:709
-#: Programs/config.c:719
-#: Programs/config.c:729
-#: Programs/config.c:739
+#: Programs/brltty-atb.c:32
+#: Programs/brltty-ctb.c:93
+#: Programs/brltty-ktb.c:77
+#: Programs/brltty-ktb.c:86
+#: Programs/brltty-trtxt.c:76
+#: Programs/config.c:708
+#: Programs/config.c:718
+#: Programs/config.c:728
+#: Programs/config.c:738
 #: Programs/config.c:748
+#: Programs/config.c:757
 msgid "directory"
 msgstr ""
 
@@ -2884,19 +3043,19 @@ msgstr ""
 msgid "done"
 msgstr ""
 
-#: Programs/menu_prefs.c:666
+#: Programs/menu_prefs.c:667
 msgid "dot 7"
 msgstr ""
 
-#: Programs/menu_prefs.c:667
+#: Programs/menu_prefs.c:668
 msgid "dot 8"
 msgstr ""
 
-#: Programs/menu_prefs.c:664
+#: Programs/menu_prefs.c:665
 msgid "dots 7 and 8"
 msgstr ""
 
-#: Programs/brltty-ktb.c:45
+#: Programs/brltty-ktb.c:46
 msgid "driver"
 msgstr ""
 
@@ -2904,19 +3063,19 @@ msgstr ""
 msgid "driver request"
 msgstr ""
 
-#: Programs/config.c:407
-#: Programs/config.c:478
-#: Programs/config.c:521
+#: Programs/config.c:406
+#: Programs/config.c:477
+#: Programs/config.c:520
 msgid "driver,..."
 msgstr ""
 
 #. xgettext: This is the description of the KEY_END command.
-#: Programs/cmds.auto.h:1631
+#: Programs/cmds.auto.h:1646
 msgid "end key"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_ENTER command.
-#: Programs/cmds.auto.h:1543
+#: Programs/cmds.auto.h:1558
 msgid "enter key"
 msgstr ""
 
@@ -2941,7 +3100,7 @@ msgid "enter/leave status display"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_ESCAPE command.
-#: Programs/cmds.auto.h:1567
+#: Programs/cmds.auto.h:1582
 msgid "escape key"
 msgstr ""
 
@@ -2954,12 +3113,12 @@ msgstr ""
 msgid "exactly"
 msgstr ""
 
-#: Programs/config.c:894
+#: Programs/config.c:903
 msgid "excess argument"
 msgstr ""
 
 #. xgettext: This is the description of the MACRO command.
-#: Programs/cmds.auto.h:1527
+#: Programs/cmds.auto.h:1542
 msgid "execute command macro"
 msgstr ""
 
@@ -2969,7 +3128,7 @@ msgstr ""
 msgid "executing \"%s\" (from \"%s\")\n"
 msgstr ""
 
-#: Programs/pgmprivs_linux.c:2047
+#: Programs/pgmprivs_linux.c:2049
 msgid "executing as the invoking user"
 msgstr ""
 
@@ -2983,18 +3142,18 @@ msgstr ""
 msgid "failed to get first focus\n"
 msgstr ""
 
-#: Programs/brltty-trtxt.c:47
-#: Programs/brltty-trtxt.c:55
-#: Programs/config.c:396
-#: Programs/config.c:450
-#: Programs/config.c:460
-#: Programs/config.c:469
-#: Programs/config.c:497
-#: Programs/config.c:540
-#: Programs/config.c:564
-#: Programs/config.c:573
-#: Programs/config.c:624
-#: Programs/config.c:758
+#: Programs/brltty-trtxt.c:48
+#: Programs/brltty-trtxt.c:56
+#: Programs/config.c:395
+#: Programs/config.c:449
+#: Programs/config.c:459
+#: Programs/config.c:468
+#: Programs/config.c:503
+#: Programs/config.c:539
+#: Programs/config.c:563
+#: Programs/config.c:572
+#: Programs/config.c:623
+#: Programs/config.c:767
 #: Programs/xbrlapi.c:135
 #: Programs/xbrlapi.c:142
 msgid "file"
@@ -3024,7 +3183,7 @@ msgid "fork of \"%s\" failed: %s\n"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_FUNCTION command.
-#: Programs/cmds.auto.h:1656
+#: Programs/cmds.auto.h:1671
 msgid "function key"
 msgstr ""
 
@@ -3078,7 +3237,7 @@ msgid "go down to last item"
 msgstr ""
 
 #. xgettext: This is the description of the NXDIFCHAR command.
-#: Programs/cmds.auto.h:1337
+#: Programs/cmds.auto.h:1352
 msgid "go down to nearest line with different character"
 msgstr ""
 
@@ -3093,7 +3252,7 @@ msgid "go down to nearest line with different highlighting"
 msgstr ""
 
 #. xgettext: This is the description of the NXINDENT command.
-#: Programs/cmds.auto.h:1274
+#: Programs/cmds.auto.h:1289
 msgid "go down to nearest line with less indent than character"
 msgstr ""
 
@@ -3228,7 +3387,7 @@ msgid "go to previous menu level"
 msgstr ""
 
 #. xgettext: This is the description of the GOTOMARK command.
-#: Programs/cmds.auto.h:1307
+#: Programs/cmds.auto.h:1322
 msgid "go to remembered braille window position"
 msgstr ""
 
@@ -3243,7 +3402,7 @@ msgid "go to screen cursor or go back after cursor tracking"
 msgstr ""
 
 #. xgettext: This is the description of the GOTOLINE command.
-#: Programs/cmds.auto.h:1317
+#: Programs/cmds.auto.h:1332
 msgid "go to selected line"
 msgstr ""
 
@@ -3278,7 +3437,7 @@ msgid "go up to first line of paragraph"
 msgstr ""
 
 #. xgettext: This is the description of the PRDIFCHAR command.
-#: Programs/cmds.auto.h:1327
+#: Programs/cmds.auto.h:1342
 msgid "go up to nearest line with different character"
 msgstr ""
 
@@ -3293,7 +3452,7 @@ msgid "go up to nearest line with different highlighting"
 msgstr ""
 
 #. xgettext: This is the description of the PRINDENT command.
-#: Programs/cmds.auto.h:1264
+#: Programs/cmds.auto.h:1279
 msgid "go up to nearest line with less indent than character"
 msgstr ""
 
@@ -3312,7 +3471,7 @@ msgstr ""
 msgid "green"
 msgstr ""
 
-#: Programs/pgmprivs_linux.c:2169
+#: Programs/pgmprivs_linux.c:2171
 msgid "group permissions added"
 msgstr ""
 
@@ -3325,7 +3484,7 @@ msgid "help screen not readable"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_HOME command.
-#: Programs/cmds.auto.h:1623
+#: Programs/cmds.auto.h:1638
 msgid "home key"
 msgstr ""
 
@@ -3336,7 +3495,7 @@ msgstr ""
 msgid "identifier"
 msgstr ""
 
-#: Programs/config.c:428
+#: Programs/config.c:427
 msgid "identifier,..."
 msgstr ""
 
@@ -3359,12 +3518,12 @@ msgstr ""
 msgid "increase speaking volume"
 msgstr ""
 
-#: Programs/core.c:1160
+#: Programs/core.c:1161
 msgid "indent"
 msgstr ""
 
 #. xgettext: This is the description of the PASTE_HISTORY command.
-#: Programs/cmds.auto.h:1361
+#: Programs/cmds.auto.h:1376
 msgid "insert clipboard history entry after screen cursor"
 msgstr ""
 
@@ -3379,14 +3538,10 @@ msgid "insert host clipboard text after screen cursor"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_INSERT command.
-#: Programs/cmds.auto.h:1639
+#: Programs/cmds.auto.h:1654
 msgid "insert key"
 msgstr ""
 
-#: Programs/program.c:173
-msgid "install path not absolute"
-msgstr ""
-
 #: Programs/brltty-hid.c:206
 msgid "integer"
 msgstr ""
@@ -3403,7 +3558,7 @@ msgstr ""
 msgid "invalid flag setting"
 msgstr ""
 
-#: Programs/config.c:2980
+#: Programs/config.c:2988
 msgid "invalid message hold timeout"
 msgstr ""
 
@@ -3450,32 +3605,32 @@ msgstr ""
 msgid "light red"
 msgstr ""
 
-#: Programs/cmd_speech.c:500
+#: Programs/cmd_speech.c:514
 msgid "line"
 msgstr ""
 
 #. xgettext: This is the description of the COPY_LINE command.
-#: Programs/cmds.auto.h:1246
+#: Programs/cmds.auto.h:1261
 msgid "linear copy to character"
 msgstr ""
 
-#: Programs/brltty-pty.c:112
+#: Programs/brltty-pty.c:113
 msgid "log escape sequences and special characters received from the pty slave"
 msgstr ""
 
-#: Programs/brltty-pty.c:100
+#: Programs/brltty-pty.c:101
 msgid "log input written to the pty slave"
 msgstr ""
 
-#: Programs/brltty-pty.c:106
+#: Programs/brltty-pty.c:107
 msgid "log output received from the pty slave that isn't an escape sequence or a special character"
 msgstr ""
 
-#: Programs/brltty-pty.c:118
+#: Programs/brltty-pty.c:119
 msgid "log unexpected input/output"
 msgstr ""
 
-#: Programs/config.c:615
+#: Programs/config.c:614
 msgid "lvl|cat,..."
 msgstr ""
 
@@ -3524,13 +3679,13 @@ msgstr ""
 msgid "name"
 msgstr ""
 
-#: Programs/config.c:418
-#: Programs/config.c:488
-#: Programs/config.c:531
-#: Programs/config.c:549
-#: Programs/config.c:582
-#: Programs/config.c:598
-#: Programs/config.c:651
+#: Programs/config.c:417
+#: Programs/config.c:487
+#: Programs/config.c:530
+#: Programs/config.c:548
+#: Programs/config.c:581
+#: Programs/config.c:597
+#: Programs/config.c:650
 msgid "name=value,..."
 msgstr ""
 
@@ -3538,11 +3693,11 @@ msgstr ""
 msgid "native"
 msgstr ""
 
-#: Programs/menu_prefs.c:668
+#: Programs/menu_prefs.c:669
 msgid "no dots"
 msgstr ""
 
-#: Programs/config.c:1286
+#: Programs/config.c:1294
 msgid "no key bindings"
 msgstr ""
 
@@ -3562,7 +3717,11 @@ msgstr ""
 msgid "not saved"
 msgstr ""
 
-#: Programs/pgmprivs_linux.c:2020
+#: Programs/menu.c:816
+msgid "not set"
+msgstr ""
+
+#: Programs/pgmprivs_linux.c:2022
 msgid "not switching to an unprivileged user"
 msgstr ""
 
@@ -3604,17 +3763,17 @@ msgstr ""
 msgid "option"
 msgstr ""
 
-#: Programs/pgmprivs_linux.c:2154
+#: Programs/pgmprivs_linux.c:2156
 msgid "ownership claimed"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_PAGE_DOWN command.
-#: Programs/cmds.auto.h:1615
+#: Programs/cmds.auto.h:1630
 msgid "page-down key"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_PAGE_UP command.
-#: Programs/cmds.auto.h:1607
+#: Programs/cmds.auto.h:1622
 msgid "page-up key"
 msgstr ""
 
@@ -3622,20 +3781,16 @@ msgstr ""
 msgid "path"
 msgstr ""
 
-#: Programs/config.c:2953
+#: Programs/config.c:2961
 msgid "pid file not specified"
 msgstr ""
 
-#: Programs/program.c:335
+#: Programs/program.c:302
 msgid "pid file open error"
 msgstr ""
 
-#: Programs/spk.c:263
-msgid "pitch"
-msgstr ""
-
 #. xgettext: This is the description of the SETLEFT command.
-#: Programs/cmds.auto.h:1290
+#: Programs/cmds.auto.h:1305
 msgid "place left end of braille window at character"
 msgstr ""
 
@@ -3643,16 +3798,12 @@ msgstr ""
 msgid "power switch"
 msgstr ""
 
-#: Programs/config.c:511
+#: Programs/config.c:510
 msgid "quality"
 msgstr ""
 
-#: Programs/spk.c:237
-msgid "rate"
-msgstr ""
-
 #. xgettext: This is the description of the COPY_RECT command.
-#: Programs/cmds.auto.h:1238
+#: Programs/cmds.auto.h:1253
 msgid "rectangular copy to character"
 msgstr ""
 
@@ -3667,36 +3818,36 @@ msgid "refresh braille display"
 msgstr ""
 
 #. xgettext: This is the description of the REFRESH_LINE command.
-#: Programs/cmds.auto.h:1420
+#: Programs/cmds.auto.h:1435
 msgid "refresh braille line"
 msgstr ""
 
-#: Programs/config.c:681
+#: Programs/config.c:680
 msgid "regexp,..."
 msgstr ""
 
-#: Programs/config.c:2207
+#: Programs/config.c:2215
 #, c-format
 msgid "reinitializing braille driver"
 msgstr ""
 
-#: Programs/config.c:2725
+#: Programs/config.c:2733
 #, c-format
 msgid "reinitializing screen driver"
 msgstr ""
 
-#: Programs/config.c:2522
+#: Programs/config.c:2530
 #, c-format
 msgid "reinitializing speech driver"
 msgstr ""
 
 #. xgettext: This is the description of the SETMARK command.
-#: Programs/cmds.auto.h:1298
+#: Programs/cmds.auto.h:1313
 msgid "remember current braille window position"
 msgstr ""
 
 #. xgettext: This is the description of the ALERT command.
-#: Programs/cmds.auto.h:1461
+#: Programs/cmds.auto.h:1476
 msgid "render an alert"
 msgstr ""
 
@@ -3738,7 +3889,7 @@ msgid "return to the active screen area"
 msgstr ""
 
 #. xgettext: This is the description of the HOSTCMD command.
-#: Programs/cmds.auto.h:1535
+#: Programs/cmds.auto.h:1550
 msgid "run host command"
 msgstr ""
 
@@ -3756,11 +3907,11 @@ msgstr ""
 msgid "scheme+..."
 msgstr ""
 
-#: Programs/config.c:2601
+#: Programs/config.c:2609
 msgid "screen driver not loadable"
 msgstr ""
 
-#: Programs/config.c:2722
+#: Programs/config.c:2730
 msgid "screen driver restarting"
 msgstr ""
 
@@ -3798,7 +3949,7 @@ msgstr ""
 msgid "search forward for clipboard text"
 msgstr ""
 
-#: Programs/menu.c:469
+#: Programs/menu.c:452
 msgid "seconds"
 msgstr ""
 
@@ -3833,7 +3984,7 @@ msgid "set attribute underlining on/off"
 msgstr ""
 
 #. xgettext: This is the description of the SET_ATTRIBUTES_TABLE command.
-#: Programs/cmds.auto.h:1377
+#: Programs/cmds.auto.h:1392
 msgid "set attributes table"
 msgstr ""
 
@@ -3852,6 +4003,11 @@ msgstr ""
 msgid "set autospeak deleted characters on/off"
 msgstr ""
 
+#. xgettext: This is the description of the ASPK_EMP_LINE command.
+#: Programs/cmds.auto.h:1213
+msgid "set autospeak empty line on/off"
+msgstr ""
+
 #. xgettext: This is the description of the ASPK_INDENT command.
 #: Programs/cmds.auto.h:998
 msgid "set autospeak indent of current line on/off"
@@ -3903,7 +4059,7 @@ msgid "set contracted/computer braille"
 msgstr ""
 
 #. xgettext: This is the description of the SET_CONTRACTION_TABLE command.
-#: Programs/cmds.auto.h:1385
+#: Programs/cmds.auto.h:1400
 msgid "set contraction table"
 msgstr ""
 
@@ -3918,12 +4074,12 @@ msgid "set hidden screen cursor on/off"
 msgstr ""
 
 #. xgettext: This is the description of the SET_KEYBOARD_TABLE command.
-#: Programs/cmds.auto.h:1393
+#: Programs/cmds.auto.h:1408
 msgid "set keyboard table"
 msgstr ""
 
 #. xgettext: This is the description of the SET_LANGUAGE_PROFILE command.
-#: Programs/cmds.auto.h:1401
+#: Programs/cmds.auto.h:1416
 msgid "set language profile"
 msgstr ""
 
@@ -3973,7 +4129,7 @@ msgid "set speech cursor visibility on/off"
 msgstr ""
 
 #. xgettext: This is the description of the TXTSEL_SET command.
-#: Programs/cmds.auto.h:1436
+#: Programs/cmds.auto.h:1451
 msgid "set text selection"
 msgstr ""
 
@@ -3983,7 +4139,7 @@ msgid "set text style 6-dot/8-dot"
 msgstr ""
 
 #. xgettext: This is the description of the SET_TEXT_TABLE command.
-#: Programs/cmds.auto.h:1369
+#: Programs/cmds.auto.h:1384
 msgid "set text table"
 msgstr ""
 
@@ -4002,7 +4158,7 @@ msgstr ""
 msgid "show current date and time"
 msgstr ""
 
-#: Programs/brltty-pty.c:66
+#: Programs/brltty-pty.c:67
 msgid "show the absolute path to the pty slave"
 msgstr ""
 
@@ -4016,16 +4172,16 @@ msgstr ""
 msgid "show various device status indicators"
 msgstr ""
 
-#: Programs/menu_prefs.c:1059
+#: Programs/menu_prefs.c:1060
 msgid "soundcard digital audio"
 msgstr ""
 
-#: Programs/menu_prefs.c:1061
+#: Programs/menu_prefs.c:1062
 msgid "soundcard synthesizer"
 msgstr ""
 
 #: Programs/cmd.c:278
-#: Programs/core.c:1066
+#: Programs/core.c:1067
 msgid "space"
 msgstr ""
 
@@ -4075,11 +4231,11 @@ msgstr ""
 msgid "specifier"
 msgstr ""
 
-#: Programs/config.c:2370
+#: Programs/config.c:2378
 msgid "speech driver not loadable"
 msgstr ""
 
-#: Programs/config.c:2519
+#: Programs/config.c:2527
 msgid "speech driver restarting"
 msgstr ""
 
@@ -4092,21 +4248,21 @@ msgstr ""
 msgid "spell current word"
 msgstr ""
 
-#: Programs/brltty-pty.c:403
+#: Programs/brltty-pty.c:432
 msgid "standard input isn't a terminal"
 msgstr ""
 
-#: Programs/brltty-pty.c:408
+#: Programs/brltty-pty.c:437
 msgid "standard output isn't a terminal"
 msgstr ""
 
 #. xgettext: This is the description of the CLIP_NEW command.
-#: Programs/cmds.auto.h:1222
+#: Programs/cmds.auto.h:1237
 msgid "start new clipboard at character"
 msgstr ""
 
 #. xgettext: This is the description of the TXTSEL_START command.
-#: Programs/cmds.auto.h:1428
+#: Programs/cmds.auto.h:1443
 msgid "start text selection"
 msgstr ""
 
@@ -4158,12 +4314,12 @@ msgid "string"
 msgstr ""
 
 #. xgettext: This is the description of the CONTEXT command.
-#: Programs/cmds.auto.h:1511
+#: Programs/cmds.auto.h:1526
 msgid "switch to command context"
 msgstr ""
 
 #. xgettext: This is the description of the SWITCHVT command.
-#: Programs/cmds.auto.h:1254
+#: Programs/cmds.auto.h:1269
 msgid "switch to specific virtual terminal"
 msgstr ""
 
@@ -4187,25 +4343,25 @@ msgstr ""
 msgid "switch to the previous virtual terminal"
 msgstr ""
 
-#: Programs/pgmprivs_linux.c:1996
+#: Programs/pgmprivs_linux.c:1998
 msgid "switched to unprivileged user"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_TAB command.
-#: Programs/cmds.auto.h:1551
+#: Programs/cmds.auto.h:1566
 msgid "tab key"
 msgstr ""
 
-#: Programs/config.c:667
-#: Programs/config.c:674
+#: Programs/config.c:666
+#: Programs/config.c:673
 msgid "text"
 msgstr ""
 
-#: Programs/brltty-pty.c:87
+#: Programs/brltty-pty.c:88
 msgid "the directory to change to"
 msgstr ""
 
-#: Programs/brltty-pty.c:94
+#: Programs/brltty-pty.c:95
 msgid "the home directory to use"
 msgstr ""
 
@@ -4221,21 +4377,21 @@ msgstr ""
 msgid "the name of the domain containing the translations"
 msgstr ""
 
-#: Programs/brltty-pty.c:80
+#: Programs/brltty-pty.c:81
 msgid "the name or number of the group to run as"
 msgstr ""
 
-#: Programs/brltty-pty.c:73
+#: Programs/brltty-pty.c:74
 msgid "the name or number of the user to run as"
 msgstr ""
 
 #. xgettext: This is the description of the PASSDOTS command.
-#: Programs/cmds.auto.h:1479
+#: Programs/cmds.auto.h:1494
 msgid "type braille dots"
 msgstr ""
 
 #. xgettext: This is the description of the PASSCHAR command.
-#: Programs/cmds.auto.h:1470
+#: Programs/cmds.auto.h:1485
 msgid "type unicode character"
 msgstr ""
 
@@ -4259,7 +4415,7 @@ msgstr ""
 msgid "unknown configuration directive"
 msgstr ""
 
-#: Programs/config.c:806
+#: Programs/config.c:815
 msgid "unknown log level or category"
 msgstr ""
 
@@ -4267,7 +4423,7 @@ msgstr ""
 msgid "unknown option"
 msgstr ""
 
-#: Programs/config.c:332
+#: Programs/config.c:331
 msgid "unknown screen content quality"
 msgstr ""
 
@@ -4275,20 +4431,16 @@ msgstr ""
 msgid "unsupported parameter"
 msgstr ""
 
-#: Programs/spk.c:211
-msgid "volume"
-msgstr ""
-
 #. LRGB
 #: Programs/cmd_utils.c:175
 msgid "white"
 msgstr ""
 
-#: Programs/pgmprivs_linux.c:1856
+#: Programs/pgmprivs_linux.c:1858
 msgid "working directory changed"
 msgstr ""
 
-#: Programs/brltty-pty.c:60
+#: Programs/brltty-pty.c:61
 msgid "write driver directives to standard error"
 msgstr ""
 
diff --git a/Messages/de.po b/Messages/de.po
index 181ab2c55..387ad310b 100644
--- a/Messages/de.po
+++ b/Messages/de.po
@@ -1,7 +1,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -18,8 +18,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: brltty 4.5\n"
 "Report-Msgid-Bugs-To: BRLTTY@brltty.app\n"
-"POT-Creation-Date: 2021-09-07 15:29+0200\n"
-"PO-Revision-Date: 2021-09-13 12:42+0200\n"
+"POT-Creation-Date: 2025-01-14 17:27+0100\n"
+"PO-Revision-Date: 2025-01-15 01:53+0000\n"
 "Last-Translator: Angela Engel <angela.engel@gmx.at>\n"
 "Language-Team: Friends of BRLTTY <BRLTTY@brlttY.app>\n"
 "Language: de\n"
@@ -28,7 +28,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: Programs/brltty.c:167
+#: Programs/brltty.c:209
 #, c-format
 msgid "\"%s\" started as \"%s\"\n"
 msgstr "\"%s\" gestartet als \"%s\"\n"
@@ -36,7 +36,7 @@ msgstr "\"%s\" gestartet als \"%s\"\n"
 #. xgettext: This phrase describes the colour of a character on the screen.
 #. xgettext: %1$s is the (already translated) foreground colour.
 #. xgettext: %2$s is the (already translated) background colour.
-#: Programs/cmd_utils.c:169
+#: Programs/cmd_utils.c:185
 #, c-format
 msgid "%1$s on %2$s"
 msgstr "%1$s auf %2$s"
@@ -66,15 +66,15 @@ msgstr[1] "%u Sekunden"
 msgid "1 cell"
 msgstr "1 Zelle"
 
-#: Programs/menu_prefs.c:900
+#: Programs/menu_prefs.c:902
 msgid "1 second"
 msgstr "1 Sekunde"
 
-#: Programs/menu_prefs.c:962
+#: Programs/menu_prefs.c:964
 msgid "10 seconds"
 msgstr "10 Sekunden"
 
-#: Programs/menu_prefs.c:1277
+#: Programs/menu_prefs.c:1297
 msgid "12 Hour"
 msgstr "12 Stunden"
 
@@ -84,19 +84,19 @@ msgstr "12 Stunden"
 msgid "2 cells"
 msgstr "2 Zellen"
 
-#: Programs/menu_prefs.c:901
+#: Programs/menu_prefs.c:903
 msgid "2 seconds"
 msgstr "2 Sekunden"
 
-#: Programs/menu_prefs.c:963
+#: Programs/menu_prefs.c:965
 msgid "20 seconds"
 msgstr "20 Sekunden"
 
-#: Programs/menu_prefs.c:1276
+#: Programs/menu_prefs.c:1296
 msgid "24 Hour"
 msgstr "24 Stunden"
 
-#: Programs/menu_prefs.c:898
+#: Programs/menu_prefs.c:900
 msgid "250 milliseconds"
 msgstr "250 Millisekunden"
 
@@ -105,27 +105,27 @@ msgstr "250 Millisekunden"
 msgid "3 cells"
 msgstr "3 Zellen"
 
-#: Programs/menu_prefs.c:964
+#: Programs/menu_prefs.c:966
 msgid "40 seconds"
 msgstr "40 Sekunden"
 
-#: Programs/menu_prefs.c:961
+#: Programs/menu_prefs.c:963
 msgid "5 seconds"
 msgstr "5 Sekunden"
 
-#: Programs/menu_prefs.c:899
+#: Programs/menu_prefs.c:901
 msgid "500 milliseconds"
 msgstr "500 Millisekunden"
 
-#: Programs/menu_prefs.c:733
+#: Programs/menu_prefs.c:734
 msgid "6-dot"
 msgstr "6-Punkt-Braille"
 
-#: Programs/brltty-ttb.c:179
+#: Programs/brltty-ttb.c:169
 msgid "8-bit character set to use."
 msgstr "8-bit Zeichensatz der verwendet werden soll."
 
-#: Programs/menu_prefs.c:732
+#: Programs/menu_prefs.c:733
 msgid "8-dot"
 msgstr "8-Punkt-Braille"
 
@@ -133,12 +133,8 @@ msgstr "8-Punkt-Braille"
 msgid "<off>"
 msgstr "<aus>"
 
-#: Programs/config.c:1566
-msgid "API Parameter"
-msgstr "API Parameter"
-
 #. xgettext: This is the description of the PASSAT command.
-#: Programs/cmds.auto.h:1471
+#: Programs/cmds.auto.h:1487
 msgid "AT (set 2) keyboard scan code"
 msgstr "AT (set 2) Tastatur-Scancode"
 
@@ -170,7 +166,7 @@ msgstr "Akustische Gitarre (Nylonsaiten)"
 msgid "Acoustic Guitar (steel)"
 msgstr "Akustische Gitarre (Stahlsaiten)"
 
-#: Programs/menu_prefs.c:1303
+#: Programs/menu_prefs.c:1323
 msgid "After Time"
 msgstr "Nach Uhrzeit"
 
@@ -179,23 +175,23 @@ msgstr "Nach Uhrzeit"
 msgid "Agogo"
 msgstr "Agogo"
 
-#: Programs/menu_prefs.c:1491
+#: Programs/menu_prefs.c:1511
 msgid "Alert"
 msgstr "Alarm"
 
-#: Programs/menu_prefs.c:1104
+#: Programs/menu_prefs.c:1106
 msgid "Alert Dots"
 msgstr "Warnpunkte"
 
-#: Programs/menu_prefs.c:1109
+#: Programs/menu_prefs.c:1111
 msgid "Alert Messages"
 msgstr "Warnmeldungen"
 
-#: Programs/menu_prefs.c:1049
+#: Programs/menu_prefs.c:1051
 msgid "Alert Tunes"
 msgstr "Warntöne"
 
-#: Programs/menu_prefs.c:864 Programs/menu_prefs.c:1194
+#: Programs/menu_prefs.c:866 Programs/spk.c:282
 msgid "All"
 msgstr "Alle"
 
@@ -217,55 +213,55 @@ msgstr "Alt Saxofon"
 msgid "Applause"
 msgstr "Applaus"
 
-#: Programs/log.c:118
+#: Programs/log.c:113
 msgid "Async Events"
 msgstr "Asynchrone Ereignisse"
 
-#: Programs/menu_prefs.c:807
+#: Programs/menu_prefs.c:808
 msgid "Attributes Blink Period"
 msgstr "Blinkdauer für Atribute"
 
-#: Programs/menu_prefs.c:815
+#: Programs/menu_prefs.c:816
 msgid "Attributes Percent Visible"
 msgstr "Anzeigedauer von Attributen in Prozent"
 
-#: Programs/config.c:1059 Programs/menu_prefs.c:1406
+#: Programs/menu_prefs.c:1426
 msgid "Attributes Table"
 msgstr "Attributtabelle"
 
-#: Programs/alert.c:168
+#: Programs/xbrlapi.c:1194
+msgid "Augment an X session by supporting input typed on the braille device, showing the title of the focused window on the braille display, and switching braille focus to it."
+msgstr ""
+
+#: Programs/alert.c:174
 msgid "Autorelease"
 msgstr "Automatische Einrastbeendung"
 
-#: Programs/menu_prefs.c:967
+#: Programs/menu_prefs.c:969
 msgid "Autorelease Time"
 msgstr "Zeit bis zur automatischen Einrastbeendung"
 
-#: Programs/menu_prefs.c:984
+#: Programs/menu_prefs.c:986
 msgid "Autorepeat Enabled"
 msgstr "Automatische Wiedderholung aktiviert"
 
-#: Programs/menu_prefs.c:990
+#: Programs/menu_prefs.c:992
 msgid "Autorepeat Interval"
 msgstr "Wiederholungsintervall"
 
-#: Programs/menu_prefs.c:997
+#: Programs/menu_prefs.c:999
 msgid "Autorepeat Panning"
 msgstr "Automatische Wiederholung für Seitwertsbewegungen"
 
-#: Programs/menu_prefs.c:1119
+#: Programs/menu_prefs.c:1133
 msgid "Autospeak"
 msgstr "Automatisches Sprechen"
 
-#: Programs/menu_prefs.c:1116
+#: Programs/menu_prefs.c:1130
 msgid "Autospeak Options"
 msgstr "Optionen für automatisches Sprechen"
 
-#: Programs/config.c:335
-msgid "Autospeak Threshold"
-msgstr ""
-
-#: Programs/config.c:2012
+#: Programs/config.c:2138
 msgid "BRLTTY stopped"
 msgstr "BRLTTY gestoppt"
 
@@ -282,7 +278,7 @@ msgstr "Banjo"
 #. xgettext: This is the name of MIDI musical instrument #68 (in the Reed group).
 #: Programs/midi.c:289
 msgid "Baritone Saxophone"
-msgstr ""
+msgstr "Baritonsaxophon"
 
 #. xgettext: This is the name of MIDI musical instrument group #5.
 #: Programs/midi.c:37
@@ -294,11 +290,11 @@ msgstr "Bass"
 msgid "Bassoon"
 msgstr "Fagott"
 
-#: Programs/menu_prefs.c:1056
+#: Programs/menu_prefs.c:1058
 msgid "Beeper"
 msgstr "PC-Piepser"
 
-#: Programs/menu_prefs.c:1302
+#: Programs/menu_prefs.c:1322
 msgid "Before Time"
 msgstr "Vor Uhrzeit"
 
@@ -307,23 +303,23 @@ msgstr "Vor Uhrzeit"
 msgid "Bird Tweet"
 msgstr "Vogelzwitschern"
 
-#: Programs/menu_prefs.c:801
+#: Programs/menu_prefs.c:802
 msgid "Blinking Attributes"
 msgstr "Blinkende Attribute"
 
-#: Programs/menu_prefs.c:823
+#: Programs/menu_prefs.c:824
 msgid "Blinking Capitals"
 msgstr "Blinkende Großbuchstaben"
 
-#: Programs/menu_prefs.c:774
+#: Programs/menu_prefs.c:775
 msgid "Blinking Screen Cursor"
 msgstr "Blinkender Bildschirmcursor"
 
-#: Programs/menu_prefs.c:1248
+#: Programs/menu_prefs.c:1268
 msgid "Blinking Speech Cursor"
 msgstr "Blinkender Sprachcursor"
 
-#: Programs/menu_prefs.c:665 Programs/menu_prefs.c:1362
+#: Programs/menu_prefs.c:665 Programs/menu_prefs.c:1382
 msgid "Block"
 msgstr "Block"
 
@@ -332,59 +328,55 @@ msgstr "Block"
 msgid "Blown Bottle"
 msgstr "Geblasene Flasche"
 
-#: Programs/log.c:142
+#: Programs/log.c:143
 msgid "Bluetooth I/O"
 msgstr "Bluetooth E/A"
 
-#: Programs/config.c:1787
+#: Programs/config.c:1907
 msgid "Braille Device"
 msgstr "Braillegerät"
 
-#: Programs/config.c:1783
-msgid "Braille Driver"
-msgstr "Brailletreiber"
-
-#: Programs/log.c:148
+#: Programs/log.c:155
 msgid "Braille Driver Events"
 msgstr "Brailletreiberereignisse"
 
-#: Programs/menu_prefs.c:752
+#: Programs/menu_prefs.c:753
 msgid "Braille Firmness"
 msgstr "Punktstärke"
 
-#: Programs/log.c:82
+#: Programs/log.c:77
 msgid "Braille Key Events"
 msgstr "Tastenereignisse der Braillezeile"
 
-#: Programs/config.c:1786
-msgid "Braille Parameter"
-msgstr "Braille-Parameter"
-
-#: Programs/menu_prefs.c:698
+#: Programs/menu_prefs.c:699
 msgid "Braille Presentation"
 msgstr "Brailledarstellung"
 
-#: Programs/menu_prefs.c:1389
+#: Programs/menu_prefs.c:1409
 msgid "Braille Tables"
 msgstr "Brailletabellen"
 
-#: Programs/menu_prefs.c:932
+#: Programs/menu_prefs.c:934
 msgid "Braille Typing"
 msgstr "Braille-Eingabe"
 
-#: Programs/menu_prefs.c:706
+#: Programs/menu_prefs.c:707
 msgid "Braille Variant"
 msgstr "Braillevariante"
 
-#: Programs/menu_prefs.c:885
+#: Programs/menu_prefs.c:887
 msgid "Braille Window Overlap"
 msgstr "Braillezeilenüberlappung"
 
-#: Programs/config.c:552
+#: Programs/config.c:410
 #, c-format
 msgid "Braille driver code (%s, %s, or one of {%s})."
 msgstr "Brailletreiber-Code: (%s, %s, oder einer von {%s})."
 
+#: Programs/brltty-ktb.c:47
+msgid "Braille driver code."
+msgstr "Braille-Treibercode."
+
 #. xgettext: This is the name of MIDI musical instrument group #8.
 #: Programs/midi.c:46
 msgid "Brass"
@@ -405,31 +397,31 @@ msgstr "Atemgeräusch"
 msgid "Bright Acoustic Piano"
 msgstr "Akustisches helles Klavier"
 
-#: Programs/xbrlapi.c:93
+#: Programs/xbrlapi.c:105
 msgid "BrlAPI authorization/authentication schemes"
 msgstr "BrlAPI Authorisierungs-/Berechtigungs-Schemen"
 
-#: Programs/xbrlapi.c:86
+#: Programs/xbrlapi.c:98
 msgid "BrlAPI host and/or port to connect to"
 msgstr "BrlAPI Host und/oder Port mit dem verbunden werden soll"
 
-#: Programs/menu_prefs.c:1424
+#: Programs/menu_prefs.c:1444
 msgid "Build Information"
 msgstr "Build Informationen"
 
-#: Programs/menu_prefs.c:725
+#: Programs/menu_prefs.c:726
 msgid "Capitalization Mode"
 msgstr "Großbuchstabenmodus"
 
-#: Programs/menu_prefs.c:828
+#: Programs/menu_prefs.c:829
 msgid "Capitals Blink Period"
 msgstr "Blinkdauer bei Großbuchstaben"
 
-#: Programs/menu_prefs.c:836
+#: Programs/menu_prefs.c:837
 msgid "Capitals Percent Visible"
 msgstr "Anzeigedauer von Großbuchstaben in Prozent"
 
-#: Programs/menu_prefs.c:1514
+#: Programs/menu_prefs.c:1534
 msgid "Category Log Level"
 msgstr "Protokollierungsausführlichkeit für Kategorien"
 
@@ -444,6 +436,18 @@ msgstr "Celesta"
 msgid "Cello"
 msgstr "Cello"
 
+#: Programs/brltty-atb.c:49
+msgid "Check an attributes table."
+msgstr ""
+
+#: Programs/brltty-ttb.c:2513
+msgid "Check/edit a text (computer braille) table, or convert it from one format to another."
+msgstr ""
+
+#: Programs/brltty-ctb.c:449
+msgid "Check/validate a contraction (literary braille) table, or translate text into contracted braille."
+msgstr ""
+
 #. xgettext: This is the name of MIDI musical instrument #53 (in the Ensemble group).
 #: Programs/midi.c:242
 msgid "Choir Aahs"
@@ -467,37 +471,41 @@ msgstr "Klarinette"
 #. xgettext: This is the name of MIDI musical instrument #8 (in the Piano group).
 #: Programs/midi.c:101
 msgid "Clavinet"
-msgstr ""
+msgstr "Klavinet"
 
-#: Programs/menu.c:894
+#: Programs/menu.c:891
 msgid "Close"
 msgstr "Schließen"
 
-#: Programs/menu_prefs.c:1286
+#: Programs/menu_prefs.c:1306
 msgid "Colon"
 msgstr "Doppelpunkt"
 
-#: Programs/menu_prefs.c:702
+#: Programs/brltty-tune.c:158
+msgid "Compose a tune with the tune builder and play it with the tone generator."
+msgstr ""
+
+#: Programs/menu_prefs.c:703
 msgid "Computer Braille"
 msgstr "Computerbraille"
 
-#: Programs/menu_prefs.c:736
+#: Programs/menu_prefs.c:737
 msgid "Computer Braille Cell Type"
-msgstr ""
+msgstr "Computer-Braille-Zellentyp"
 
-#: Programs/menu_prefs.c:1448
+#: Programs/menu_prefs.c:1468
 msgid "Configuration Directory"
 msgstr "Konfigurationsverzeichnis"
 
-#: Programs/config.c:2955 Programs/menu_prefs.c:1453
+#: Programs/menu_prefs.c:1473
 msgid "Configuration File"
 msgstr "Konfigurationsdatei"
 
-#: Programs/alert.c:163
+#: Programs/alert.c:169
 msgid "Console Bell"
 msgstr "Konsolenglöckchen"
 
-#: Programs/menu_prefs.c:1035
+#: Programs/menu_prefs.c:1037
 msgid "Console Bell Alert"
 msgstr "Konsolen-Tongenerator Hinweis"
 
@@ -506,23 +514,27 @@ msgstr "Konsolen-Tongenerator Hinweis"
 msgid "Contrabass"
 msgstr "Kontrabass"
 
-#: Programs/menu_prefs.c:703
+#: Programs/menu_prefs.c:704
 msgid "Contracted Braille"
 msgstr "Braille-Kurzschrift"
 
-#: Programs/config.c:1027 Programs/menu_prefs.c:1399
+#: Programs/menu_prefs.c:1419
 msgid "Contraction Table"
 msgstr "Kurzschrifttabelle"
 
-#: Programs/brltty-ctb.c:62
+#: Programs/brltty-ctb.c:73
 msgid "Contraction table."
 msgstr "Kurzschrifttabelle."
 
-#: Programs/brltty-ctb.c:76
+#: Programs/brltty-ctb.c:87
 msgid "Contraction verification table."
 msgstr "Kurzschriftverifikationstabelle"
 
-#: Programs/menu_prefs.c:1492
+#: Programs/xbrlapi.c:817
+msgid "Could not get XKB major opcode\n"
+msgstr ""
+
+#: Programs/menu_prefs.c:1512
 msgid "Critical"
 msgstr "Kritisch"
 
@@ -534,7 +546,7 @@ msgstr "Cursorspalte"
 msgid "Cursor Coordinates"
 msgstr "Cursorkoordinaten"
 
-#: Programs/log.c:100
+#: Programs/log.c:95
 msgid "Cursor Routing"
 msgstr "Cursorrouting"
 
@@ -542,11 +554,11 @@ msgstr "Cursorrouting"
 msgid "Cursor Row"
 msgstr "Cursorzeile"
 
-#: Programs/log.c:94
+#: Programs/log.c:89
 msgid "Cursor Tracking"
 msgstr "Cursorverfolgung"
 
-#: Programs/menu_prefs.c:904
+#: Programs/menu_prefs.c:906
 msgid "Cursor Tracking Delay"
 msgstr "Zeitverzögerung für Cursorverfolgung"
 
@@ -558,35 +570,35 @@ msgstr "Cursor- und Braillezeilenspalte"
 msgid "Cursor and Window Row"
 msgstr "Cursor- und Braillezeilenzeile"
 
-#: Programs/menu_prefs.c:1324
+#: Programs/menu_prefs.c:1344
 msgid "Dash"
 msgstr "Bindestrich"
 
-#: Programs/menu_prefs.c:1317
+#: Programs/menu_prefs.c:1337
 msgid "Date Format"
 msgstr "Datumsformat"
 
-#: Programs/menu_prefs.c:1306
+#: Programs/menu_prefs.c:1326
 msgid "Date Position"
 msgstr "Datumsposition"
 
-#: Programs/menu_prefs.c:1329
+#: Programs/menu_prefs.c:1349
 msgid "Date Separator"
 msgstr "Datum Trennzeichen"
 
-#: Programs/menu_prefs.c:1314
+#: Programs/menu_prefs.c:1334
 msgid "Day Month Year"
 msgstr "Tag Monat Jahr"
 
-#: Programs/menu_prefs.c:1497
+#: Programs/menu_prefs.c:1517
 msgid "Debug"
 msgstr "Debug"
 
-#: Programs/config.c:573
+#: Programs/config.c:431
 msgid "Device for accessing braille display."
 msgstr "Pfad zur Schnittstelle für den Zugriff auf die Braillezeile."
 
-#: Programs/config.c:532
+#: Programs/config.c:592
 msgid "Disable the application programming interface."
 msgstr "Deaktiviere die Programmierschnittstelle."
 
@@ -595,31 +607,31 @@ msgstr "Deaktiviere die Programmierschnittstelle."
 msgid "Distortion Guitar"
 msgstr "Verzerrte Gitarre"
 
-#: Programs/config.c:675
+#: Programs/config.c:506
 msgid "Do not autospeak when braille is not being used."
 msgstr "Nicht automatisch sprechen wenn keine Braillezeile in Verwendung ist."
 
-#: Programs/xbrlapi.c:112
+#: Programs/xbrlapi.c:118
 msgid "Do not write any text to the braille device"
 msgstr "Schreibe keinen Text auf die Braillezeile"
 
-#: Programs/brltty-trtxt.c:79
+#: Programs/brltty-trtxt.c:70
 msgid "Don't fall back to the Unicode base character."
 msgstr "Nicht auf das Unicode Basiszeichen zurückfallen."
 
-#: Programs/config.c:443
+#: Programs/config.c:645
 msgid "Don't switch to an unprivileged user or relinquish any privileges (group memberships, capabilities, etc)."
 msgstr ""
 
-#: Programs/alert.c:52
+#: Programs/alert.c:58
 msgid "Done"
 msgstr "Fertig"
 
-#: Programs/menu_prefs.c:1287 Programs/menu_prefs.c:1326
+#: Programs/menu_prefs.c:1307 Programs/menu_prefs.c:1346
 msgid "Dot"
 msgstr "Punkt"
 
-#: Programs/menu_prefs.c:942
+#: Programs/menu_prefs.c:944
 msgid "Dots via Unicode Braille"
 msgstr "Punkte via Unicode Braille"
 
@@ -629,7 +641,7 @@ msgstr "Punkte via Unicode Braille"
 msgid "Drawbar Organ"
 msgstr "Orgel mit Zugstange"
 
-#: Programs/config.c:2976 Programs/menu_prefs.c:1473
+#: Programs/menu_prefs.c:1493
 msgid "Drivers Directory"
 msgstr "Treiber-Verzeichnis"
 
@@ -638,12 +650,16 @@ msgstr "Treiber-Verzeichnis"
 msgid "Dulcimer"
 msgstr "Dulcimer"
 
-#: Programs/menu_prefs.c:879
+#: Programs/menu_prefs.c:881
 #, fuzzy
 msgid "Eager Sliding Braille Window"
 msgstr "Erweiterte Braillezeilenausschnittsüberlappung"
 
-#: Programs/brltty-ttb.c:158
+#: Programs/brltty-hid.c:201
+msgid "Echo (in hexadecimal) input received from the device."
+msgstr ""
+
+#: Programs/brltty-ttb.c:148
 msgid "Edit table."
 msgstr "Tabelle editieren."
 
@@ -652,7 +668,6 @@ msgstr "Tabelle editieren."
 msgid "Electric Bass (finger)"
 msgstr "Elektrischer Bass (Finger)"
 
-# Elektronischer Bass (Pick)
 #. xgettext: This is the name of MIDI musical instrument #35 (in the Bass group).
 #: Programs/midi.c:186
 msgid "Electric Bass (pick)"
@@ -688,7 +703,7 @@ msgstr "Elektrisches Klavier 1"
 msgid "Electric Piano 2"
 msgstr "Elektrisches Klavier 2"
 
-#: Programs/menu_prefs.c:1490
+#: Programs/menu_prefs.c:1510
 msgid "Emergency"
 msgstr "Notfall"
 
@@ -696,7 +711,7 @@ msgstr "Notfall"
 msgid "End"
 msgstr "Ende"
 
-#: Programs/menu_prefs.c:865
+#: Programs/menu_prefs.c:867
 msgid "End of Line"
 msgstr "Zeilenende"
 
@@ -705,7 +720,7 @@ msgstr "Zeilenende"
 msgid "English Horn"
 msgstr "Englisches Horn"
 
-#: Programs/menu_prefs.c:1229
+#: Programs/menu_prefs.c:1249
 msgid "Enqueue"
 msgstr "Anhängen"
 
@@ -714,7 +729,7 @@ msgstr "Anhängen"
 msgid "Ensemble"
 msgstr "Ensemble"
 
-#: Programs/menu_prefs.c:1493
+#: Programs/menu_prefs.c:1513
 msgid "Error"
 msgstr "Fehler"
 
@@ -723,23 +738,23 @@ msgstr "Fehler"
 msgid "Ethnic Instruments"
 msgstr "Ethnische Instrumente"
 
-#: Programs/menu_prefs.c:1032
+#: Programs/menu_prefs.c:1034
 msgid "Event Alerts"
 msgstr "Warnungen bei Ereignissen"
 
-#: Programs/menu_prefs.c:713
+#: Programs/menu_prefs.c:714
 msgid "Expand Current Word"
 msgstr "Aktuelles Wort ausschreiben"
 
-#: Programs/config.c:487
+#: Programs/config.c:584
 msgid "Explicit preference settings."
 msgstr "Explizite Einstellungen."
 
-#: Programs/menu_prefs.c:1059
+#: Programs/menu_prefs.c:1061
 msgid "FM"
 msgstr "FM"
 
-#: Programs/menu_prefs.c:1097
+#: Programs/menu_prefs.c:1099
 msgid "FM Volume"
 msgstr "FM Lautstärke"
 
@@ -790,24 +805,32 @@ msgstr "FX 8 (Sci-Fi)"
 msgid "Fiddle"
 msgstr "Fiedel"
 
+#: Programs/brltty-hid.c:76
+msgid "Filter for a Bluetooth device."
+msgstr ""
+
+#: Programs/brltty-hid.c:70
+msgid "Filter for a USB device (the default if not ambiguous)."
+msgstr ""
+
+#: Programs/brltty-hid.c:1065
+msgid "Find HID devices, list report descriptors, read/write reports/features, or monitor input from a HID device."
+msgstr ""
+
 #. xgettext: This is the name of MIDI musical instrument #74 (in the Pipe group).
 #: Programs/midi.c:308
 msgid "Flute"
 msgstr "Flöte"
 
-#: Programs/brltty-ctb.c:96
+#: Programs/brltty-ctb.c:65
 msgid "Force immediate output."
 msgstr "Sofortige Ausgabe erzwingen."
 
-#: Programs/brltty-cldr.c:42
-msgid "Format of each output line."
-msgstr "Format einer Ausgabezeile."
-
-#: Programs/brltty-ttb.c:165
+#: Programs/brltty-ttb.c:155
 msgid "Format of input file."
 msgstr "Format der Eingabedatei."
 
-#: Programs/brltty-ttb.c:172
+#: Programs/brltty-ttb.c:162
 msgid "Format of output file."
 msgstr "Format der Ausgabedatei."
 
@@ -821,7 +844,7 @@ msgstr "Waldhorn"
 msgid "Fretless Bass"
 msgstr "bundloser Bass"
 
-#: Programs/alert.c:97
+#: Programs/alert.c:103
 msgid "Frozen"
 msgstr "Eingefroren"
 
@@ -829,10 +852,6 @@ msgstr "Eingefroren"
 msgid "Generic"
 msgstr "Allgemein"
 
-#: Programs/log.c:64
-msgid "Generic Input"
-msgstr "allgemeine Eingaben"
-
 #. xgettext: This is the name of MIDI musical instrument #10 (in the Chromatic Percussion group).
 #: Programs/midi.c:108
 msgid "Glockenspiel"
@@ -859,6 +878,10 @@ msgstr "Gitarre, Obertöne"
 msgid "Gunshot"
 msgstr "Gewehrschuss"
 
+#: Programs/config.c:558
+msgid "Handle keyboard key events when using a Linux tty in graphics mode."
+msgstr ""
+
 #. xgettext: This is the name of MIDI musical instrument #23 (in the Organ group).
 #: Programs/midi.c:148
 msgid "Harmonica"
@@ -878,11 +901,15 @@ msgstr "Helikopter"
 msgid "Help Screen"
 msgstr "Hilfe-Schirm"
 
-#: Programs/menu_prefs.c:748 Programs/menu_prefs.c:1013
+#: Programs/menu_prefs.c:668
+msgid "Hide"
+msgstr "Verstecken"
+
+#: Programs/menu_prefs.c:749 Programs/menu_prefs.c:1015
 msgid "High"
 msgstr "Hoch"
 
-#: Programs/menu_prefs.c:921
+#: Programs/menu_prefs.c:923
 msgid "Highlight Braille Window Location"
 msgstr "Braillezeilenposition hervorheben"
 
@@ -891,36 +918,40 @@ msgstr "Braillezeilenposition hervorheben"
 msgid "Honkytonk Piano"
 msgstr "Honky-tonk Klavier"
 
-#: Programs/menu_prefs.c:1228
+#: Programs/log.c:149
+msgid "Human Interface I/O"
+msgstr ""
+
+#: Programs/menu_prefs.c:1248
 msgid "Immediate"
 msgstr "Sofort"
 
-#: Programs/xbrlapi.c:665
+#: Programs/xbrlapi.c:813
 msgid "Incompatible XKB library\n"
 msgstr "Inkompatible XKB Bibliothek\n"
 
-#: Programs/xbrlapi.c:667
+#: Programs/xbrlapi.c:815
 msgid "Incompatible XKB server support\n"
 msgstr "Inkompatible XKB Serverunterstützung\n"
 
-#: Programs/menu_prefs.c:1496
+#: Programs/menu_prefs.c:1516
 msgid "Information"
 msgstr "Information"
 
-#: Programs/menu_prefs.c:956
+#: Programs/menu_prefs.c:958
 msgid "Input Options"
 msgstr "Eingabeoptionen"
 
-#: Programs/log.c:70
+#: Programs/log.c:65
 msgid "Input Packets"
 msgstr "eingehende Datenpakete"
 
-#: Programs/config.c:418
+#: Programs/config.c:774
 #, c-format
 msgid "Install the %s service, and then exit."
 msgstr "Installiere das Service %s und beende dann."
 
-#: Programs/menu_prefs.c:1500
+#: Programs/menu_prefs.c:1520
 msgid "Internal Parameters"
 msgstr "Interne Parameter"
 
@@ -930,7 +961,7 @@ msgstr "Java-Klasse nicht gefunden"
 
 #: Drivers/Screen/Android/screen.c:181
 msgid "Java exception occurred"
-msgstr ""
+msgstr "Ein Java-Ausnahmefehler ist aufgetreten"
 
 #: Drivers/Screen/Android/screen.c:194
 msgid "Java method not found"
@@ -941,31 +972,31 @@ msgstr "Java-Methode nicht gefunden"
 msgid "Kalimba"
 msgstr "Kalimba"
 
-#: Programs/config.c:1709
+#: Programs/config.c:1833
 msgid "Key Bindings"
 msgstr "Tastenbelegungen"
 
-#: Programs/config.c:1237
+#: Programs/config.c:1275
 msgid "Key Help"
 msgstr "Tastenhilfe"
 
-#: Programs/config.c:1714 Programs/ktb_list.c:737
+#: Programs/config.c:1838 Programs/ktb_list.c:737
 msgid "Key Table"
 msgstr "Tastentabelle"
 
-#: Programs/menu_prefs.c:935
+#: Programs/menu_prefs.c:937
 msgid "Keyboard Enabled"
 msgstr "Tastatur aktiviert"
 
-#: Programs/log.c:88
+#: Programs/log.c:83
 msgid "Keyboard Key Events"
 msgstr "Tastaturereignisse"
 
-#: Programs/menu_prefs.c:1042
+#: Programs/menu_prefs.c:1044
 msgid "Keyboard LED Alerts"
 msgstr "Tastaturer-LED Warnungen"
 
-#: Programs/config.c:1322 Programs/menu_prefs.c:1024
+#: Programs/menu_prefs.c:1026
 msgid "Keyboard Table"
 msgstr "Tastaturtabelle"
 
@@ -974,7 +1005,7 @@ msgstr "Tastaturtabelle"
 msgid "Koto"
 msgstr "Koto"
 
-#: Programs/config.c:3112
+#: Programs/config.c:3223
 msgid "Language"
 msgstr "Sprache"
 
@@ -1023,56 +1054,68 @@ msgstr "Hauptstimme 8 (Bass und Führung)"
 msgid "Learn Mode"
 msgstr "Lernmodus"
 
-#: Programs/menu_prefs.c:1341
+#: Programs/menu_prefs.c:1361
 msgid "Left"
 msgstr "Links"
 
-#: Programs/brltty-ktb.c:51
+#: Programs/brltty-hid.c:167
+msgid "List each report's identifier and sizes."
+msgstr ""
+
+#: Programs/brltty-ktb.c:59
 msgid "List key names."
 msgstr "Tastennamen auflisten."
 
-#: Programs/brltty-ktb.c:57
+#: Programs/brltty-ktb.c:65
 msgid "List key table in help screen format."
 msgstr "Tastentabelle im Hilfe-Schirm Format auflisten."
 
-#: Programs/brltty-ktb.c:63
+#: Programs/brltty-ktb.c:71
 msgid "List key table in reStructuredText format."
 msgstr "Tastentabelle im reStructuredText-Format auflisten."
 
-#: Programs/menu_prefs.c:1483
+#: Programs/brltty-hid.c:161
+msgid "List the HID report descriptor's items."
+msgstr ""
+
+#: Programs/brltty-cldr.c:237
+msgid "List the characters defined within a CLDR (Common Locale Data Repository Project) annotations file."
+msgstr ""
+
+#: Programs/brltty-lsinc.c:95
+msgid "List the paths to a data file and those which it recursively includes."
+msgstr ""
+
+#: Programs/menu_prefs.c:1503
 msgid "Locale Directory"
 msgstr "Lokalisierungsverzeichnis"
 
-#: Programs/menu_prefs.c:1519
+#: Programs/menu_prefs.c:1539
 msgid "Log Categories"
 msgstr "Protokollierungskategorien"
 
-#: Programs/config.c:890
-msgid "Log Level"
-msgstr "Protokollierungsausführlichkeit"
-
-#: Programs/menu_prefs.c:1580
+#: Programs/menu_prefs.c:1600
 msgid "Log Messages"
 msgstr "Protokollierungsmeldungen"
 
-#: Programs/config.c:773
+#: Programs/config.c:384
 msgid "Log the versions of the core, API, and built-in drivers, and then exit."
 msgstr "Protokolliere die Version des Kerns, der API, der integrierten Treiber und beende dann."
 
-#: Programs/config.c:738
+#: Programs/config.c:632
 msgid "Log to standard error rather than to the system log."
 msgstr "Protokolliere via Standardfehlerausgabe anstatt System Log."
 
-#: Programs/config.c:752
+#: Programs/config.c:617
 #, c-format
 msgid "Logging level (%s or one of {%s}) and/or log categories to enable (any combination of {%s}, each optionally prefixed by %s to disable)."
 msgstr ""
 
-#: Programs/menu_prefs.c:978
+#: Programs/menu_prefs.c:980
 msgid "Long Press Time"
 msgstr "Zeitverzögerung"
 
-#: Programs/menu_prefs.c:746 Programs/menu_prefs.c:1011
+#: Programs/menu_prefs.c:747 Programs/menu_prefs.c:1013
 msgid "Low"
 msgstr "Niedrig"
 
@@ -1084,40 +1127,72 @@ msgstr "Unterer linker Punkt"
 msgid "Lower Right Dot"
 msgstr "Unterer rechter Punkt"
 
-#: Programs/menu_prefs.c:1058
+#: Programs/menu_prefs.c:1060
 msgid "MIDI"
 msgstr "MIDI"
 
-#: Programs/config.c:722
+#: Programs/config.c:702
 msgid "MIDI (Musical Instrument Digital Interface) device specifier."
 msgstr "MIDI (Musical Instrument Digital Interface) Geräts-Angabe."
 
-#: Programs/menu_prefs.c:1088
+#: Programs/menu_prefs.c:1090
 msgid "MIDI Instrument"
 msgstr "MIDI Instrument"
 
-#: Programs/menu_prefs.c:1078
+#: Programs/menu_prefs.c:1080
 msgid "MIDI Volume"
 msgstr "MIDI Lautstärke"
 
-#: Programs/menu_prefs.c:1443
+#: Programs/menu_prefs.c:1463
 msgid "Mailing List"
 msgstr "Mailing-Liste"
 
+#: Programs/brltty-clip.c:154
+msgid "Manage brltty's clipboard from the command line."
+msgstr ""
+
 #. xgettext: This is the name of MIDI musical instrument #13 (in the Chromatic Percussion group).
 #: Programs/midi.c:117
 msgid "Marimba"
 msgstr "Marimba"
 
-#: Programs/menu_prefs.c:749 Programs/menu_prefs.c:1014
+#: Programs/brltty-hid.c:118
+msgid "Match the full device address (Bluetooth only - all six two-digit, hexadecimal octets separated by a colon [:])."
+msgstr ""
+
+#: Programs/brltty-hid.c:90
+msgid "Match the product identifier (four hexadecimal digits)."
+msgstr ""
+
+#: Programs/brltty-hid.c:125
+msgid "Match the start of the device name (Bluetooth only)."
+msgstr ""
+
+#: Programs/brltty-hid.c:97
+msgid "Match the start of the manufacturer name (USB only)."
+msgstr ""
+
+#: Programs/brltty-hid.c:104
+msgid "Match the start of the product description (USB only)."
+msgstr ""
+
+#: Programs/brltty-hid.c:111
+msgid "Match the start of the serial number (USB only)."
+msgstr ""
+
+#: Programs/brltty-hid.c:83
+msgid "Match the vendor identifier (four hexadecimal digits)."
+msgstr ""
+
+#: Programs/menu_prefs.c:750 Programs/menu_prefs.c:1016
 msgid "Maximum"
 msgstr "Maximal"
 
-#: Programs/brltty-ctb.c:90
+#: Programs/brltty-ctb.c:53
 msgid "Maximum length of an output line."
 msgstr "Maximale Länge einer Ausgabezeile."
 
-#: Programs/menu_prefs.c:747 Programs/menu_prefs.c:1012
+#: Programs/menu_prefs.c:748 Programs/menu_prefs.c:1014
 msgid "Medium"
 msgstr "Mittel"
 
@@ -1126,46 +1201,37 @@ msgstr "Mittel"
 msgid "Melodic Tom"
 msgstr "Melodische Trommel"
 
-#: Programs/menu_prefs.c:679
+#: Programs/menu_prefs.c:680
 msgid "Menu Options"
 msgstr "Menüoptionen"
 
-#: Programs/config.c:731
+#: Programs/config.c:662
 msgid "Message hold timeout (in 10ms units)."
 msgstr "Meldungsanzeigedauer (in 10ms Einheiten)."
 
-#: Programs/config.c:893
-#, fuzzy
-msgid "Messages Directory"
-msgstr "Tabellenverzeichnis"
-
-#: Programs/config.c:892
-msgid "Messages Domain"
-msgstr ""
-
-#: Programs/config.c:891
-msgid "Messages Locale"
-msgstr ""
-
-#: Programs/menu_prefs.c:745 Programs/menu_prefs.c:1010
+#: Programs/menu_prefs.c:746 Programs/menu_prefs.c:1012
 msgid "Minimum"
 msgstr "Minimal"
 
-#: Programs/config.c:682
+#: Programs/config.c:513
 #, c-format
 msgid "Minimum screen content quality to autospeak (one of {%s})."
-msgstr ""
+msgstr "Minimale Bildschirminhalt-Qualität für automatisches Sprechen (einer von {%s})."
 
-#: Programs/menu_prefs.c:1313
+#: Programs/menu_prefs.c:1333
 msgid "Month Day Year"
 msgstr "Monat Tag Jahr"
 
+#: Programs/spk.c:281
+msgid "Most"
+msgstr "Die meisten"
+
 #. xgettext: This is the name of MIDI musical instrument #11 (in the Chromatic Percussion group).
 #: Programs/midi.c:111
 msgid "Music Box"
 msgstr "Musikbox"
 
-#: Programs/menu_prefs.c:1058
+#: Programs/menu_prefs.c:1060
 msgid "Musical Instrument Digital Interface"
 msgstr "Musical Instrument Digital Interface"
 
@@ -1174,32 +1240,36 @@ msgstr "Musical Instrument Digital Interface"
 msgid "Muted Trumpet"
 msgstr "Gedämpfte Trompete"
 
-#: Programs/config.c:623
+#: Programs/config.c:567
+msgid "Name of or path to GUI keyboard table."
+msgstr "Name oder Pfad zur GUI-Tastaturtabelle."
+
+#: Programs/config.c:471
 msgid "Name of or path to attributes table."
 msgstr "Name der oder Pfad zur Attributtabelle."
 
-#: Programs/config.c:615
+#: Programs/config.c:463
 msgid "Name of or path to contraction table."
 msgstr "Name der oder Pfad zur Kurzschrifttabelle."
 
-#: Programs/config.c:479
+#: Programs/config.c:576
 msgid "Name of or path to default preferences file."
 msgstr "Name der oder Pfad zur Standardeinstellungsdatei."
 
-#: Programs/config.c:632
+#: Programs/config.c:543
 msgid "Name of or path to keyboard table."
 msgstr "Name der oder Pfad zur Tastentabelle."
 
-#: Programs/config.c:668
+#: Programs/config.c:499
 msgid "Name of or path to speech input object."
 msgstr "Name des oder Pfad zum Spracheingabeobjekts."
 
-#: Programs/config.c:605
+#: Programs/config.c:453
 #, c-format
 msgid "Name of or path to text table (or %s)."
 msgstr "Name der oder Pfad zur Texttabelle (oder %s)."
 
-#: Programs/menu_prefs.c:845
+#: Programs/menu_prefs.c:846
 msgid "Navigation Options"
 msgstr "Navigationsoptionen"
 
@@ -1207,18 +1277,17 @@ msgstr "Navigationsoptionen"
 msgid "No"
 msgstr "Nein"
 
-#: Programs/menu_prefs.c:720
+#: Programs/menu_prefs.c:721
 msgid "No Capitalization"
 msgstr "Keine Großschreibung"
 
-#: Programs/menu_prefs.c:897 Programs/menu_prefs.c:1192
-#: Programs/menu_prefs.c:1205 Programs/menu_prefs.c:1218
-#: Programs/menu_prefs.c:1301 Programs/menu_prefs.c:1340
-#: Programs/menu_prefs.c:1360
+#: Programs/menu_prefs.c:899 Programs/menu_prefs.c:1225
+#: Programs/menu_prefs.c:1238 Programs/menu_prefs.c:1321
+#: Programs/menu_prefs.c:1360 Programs/menu_prefs.c:1380 Programs/spk.c:279
 msgid "None"
 msgstr "Keine"
 
-#: Programs/menu_prefs.c:1495
+#: Programs/menu_prefs.c:1515
 msgid "Notice"
 msgstr "Hinweis"
 
@@ -1232,18 +1301,22 @@ msgstr "Oboe"
 msgid "Ocarina"
 msgstr "Okarina"
 
-#: Programs/menu_prefs.c:960
+#: Programs/menu_prefs.c:962
 msgid "Off"
 msgstr "Aus"
 
-#: Programs/config.c:1800
+#: Programs/config.c:1926
 msgid "Old Preferences File"
 msgstr "Alte Einstellungsdatei"
 
-#: Programs/menu_prefs.c:973
+#: Programs/menu_prefs.c:975
 msgid "On First Release"
 msgstr "Beim ersten Loslassen"
 
+#: Programs/cmdline.c:281
+msgid "Options"
+msgstr "Optionen"
+
 #. xgettext: This is the name of MIDI musical instrument #56 (in the Ensemble group).
 #: Programs/midi.c:251
 msgid "Orchestra Hit"
@@ -1259,7 +1332,7 @@ msgstr "Orchesterharfe"
 msgid "Organ"
 msgstr "Orgel"
 
-#: Programs/log.c:76
+#: Programs/log.c:71
 msgid "Output Packets"
 msgstr "ausgehende Datenpakete"
 
@@ -1268,32 +1341,32 @@ msgstr "ausgehende Datenpakete"
 msgid "Overdriven Guitar"
 msgstr "Übersteuerte Gitarre"
 
-#: Drivers/Braille/Iris/braille.c:1545
+#: Drivers/Braille/Iris/braille.c:1548
 msgid "PC mode"
 msgstr "PC-Modus"
 
-#: Programs/menu_prefs.c:1057
+#: Programs/menu_prefs.c:1059
 msgid "PCM"
 msgstr "PCM"
 
-#: Programs/config.c:712
+#: Programs/config.c:692
 msgid "PCM (soundcard digital audio) device specifier."
-msgstr ""
+msgstr "PCM (Soundkarte Digital Audio) Gerätespezifikator."
 
-#: Programs/menu_prefs.c:1070
+#: Programs/menu_prefs.c:1072
 msgid "PCM Volume"
 msgstr "PCM Lautstärke"
 
 #. xgettext: This is the description of the PASSPS2 command.
-#: Programs/cmds.auto.h:1487
+#: Programs/cmds.auto.h:1503
 msgid "PS/2 (set 3) keyboard scan code"
 msgstr "PS/2 (set 3) Tastatur-Scancode"
 
-#: Programs/menu_prefs.c:1433
+#: Programs/menu_prefs.c:1453
 msgid "Package Revision"
 msgstr "Paketrevision"
 
-#: Programs/menu_prefs.c:1428
+#: Programs/menu_prefs.c:1448
 msgid "Package Version"
 msgstr "Paket Version"
 
@@ -1343,81 +1416,81 @@ msgstr "Basisstimme 8 (Sweep)"
 msgid "Pan Flute"
 msgstr "Panflöte"
 
-#: Programs/config.c:541
+#: Programs/config.c:601
 msgid "Parameters for the application programming interface."
 msgstr "Parameter für die Programmierschnittstelle."
 
-#: Programs/config.c:563
+#: Programs/config.c:421
 msgid "Parameters for the braille driver."
 msgstr "Parameter für den Brailletreiber."
 
-#: Programs/config.c:436
+#: Programs/config.c:654
 #, fuzzy
 msgid "Parameters for the privilege establishment stage."
 msgstr "Parameter für den Brailletreiber."
 
-#: Programs/config.c:703
+#: Programs/config.c:534
 msgid "Parameters for the screen driver."
 msgstr "Parameter für den Bildschirmtreiber."
 
-#: Programs/config.c:660
+#: Programs/config.c:491
 msgid "Parameters for the speech driver."
 msgstr "Parameter für den Sprachausgabentreiber."
 
-#: Programs/config.c:470
+#: Programs/config.c:400
 msgid "Path to default settings file."
 msgstr "Pfad zur Standardkonfigurationsdatei."
 
-#: Programs/config.c:524
+#: Programs/config.c:723
 msgid "Path to directory containing drivers."
 msgstr "Pfad zum Verzeichnis das Treiber enthält."
 
-#: Programs/brltest.c:68 Programs/brltty-atb.c:36 Programs/brltty-ctb.c:54
-#: Programs/brltty-ktb.c:73 Programs/config.c:595
+#: Programs/brltest.c:65 Programs/brltty-atb.c:35 Programs/brltty-ctb.c:96
+#: Programs/brltty-ktb.c:80 Programs/config.c:713
 msgid "Path to directory containing tables."
 msgstr "Pfad zum Tabellen-Verzeichnis."
 
-#: Programs/brltty-ttb.c:152
+#: Programs/brltty-ttb.c:186
 msgid "Path to directory containing text tables."
 msgstr "Pfad zum einem Verzeichnis das Texttabellen enthält."
 
-#: Programs/brltty-ktb.c:83
+#: Programs/brltty-ktb.c:89
 msgid "Path to directory for loading drivers."
 msgstr "Pfad zum Verzeichnis aus dem Treiber geladen werden."
 
-#: Programs/brltty-trtxt.c:51
+#: Programs/brltty-trtxt.c:79
 msgid "Path to directory for text tables."
 msgstr "Pfad zum Verzeichnis für Texttabellen."
 
-#: Programs/brltest.c:78 Programs/config.c:514
+#: Programs/brltest.c:83 Programs/config.c:743
 msgid "Path to directory which can be written to."
 msgstr "Pfad zum Verzeichnis in dem Dateien erstellt werden können."
 
-#: Programs/config.c:504
+#: Programs/config.c:733
 msgid "Path to directory which contains files that can be updated."
 msgstr "Pfad zum Verzeichnis in dem Dateien modifiziert werden können."
 
-#: Programs/config.c:404
+#: Programs/config.c:752
 msgid "Path to directory which contains message localizations."
-msgstr ""
+msgstr "Pfad zum Verzeichnis, das Nachrichten-Lokalisierungen enthält."
 
-#: Programs/brltty-trtxt.c:59
+#: Programs/brltty-trtxt.c:50
 msgid "Path to input text table."
 msgstr "Pfad der Brailletabelle für den Eingabetext."
 
-#: Programs/config.c:761
+#: Programs/config.c:626
 msgid "Path to log file."
 msgstr "Pfad zur Protokolldatei."
 
-#: Programs/brltty-trtxt.c:67
+#: Programs/brltty-trtxt.c:58
 msgid "Path to output text table."
 msgstr "Pfad der Brailletabelle für den Ausgabetext."
 
-#: Programs/config.c:460
+#: Programs/config.c:761
 msgid "Path to process identifier file."
 msgstr "Pfad zur Prozessidentifikationsdatei."
 
-#: Programs/config.c:494
+#: Programs/config.c:683
 msgid "Patterns that match command prompts."
 msgstr "Muster die den Kommandoprompt beschreiben."
 
@@ -1447,16 +1520,20 @@ msgstr "Piccoloflöte"
 msgid "Pipe"
 msgstr "Pfeife"
 
+#: Programs/spk.c:263
+msgid "Pitch"
+msgstr ""
+
 #. xgettext: This is the name of MIDI musical instrument #46 (in the Strings group).
 #: Programs/midi.c:220
 msgid "Pizzicato Strings"
 msgstr "Pizzikato-Saiten"
 
-#: Drivers/Braille/Baum/braille.c:1158
+#: Drivers/Braille/Baum/braille.c:1159
 msgid "Powerdown"
 msgstr "Abschaltung"
 
-#: Programs/config.c:2956 Programs/menu_prefs.c:1463
+#: Programs/menu_prefs.c:1483
 msgid "Preferences File"
 msgstr "Einstellungsdatei"
 
@@ -1464,36 +1541,39 @@ msgstr "Einstellungsdatei"
 msgid "Preferences Menu"
 msgstr "Einstellungsmenü"
 
-#: Headers/options.h:75
-msgid "Print a usage summary (all options), and then exit."
-msgstr "Zeige eine Benutzungszusammenfassung (alle Optionen) und beende dann."
-
-#: Headers/options.h:70
-msgid "Print a usage summary (commonly used options only), and then exit."
-msgstr "Zeige eine Benutzungszusammenfassung (nur häufig verwendete Optionen) und beende dann."
-
-#: Programs/config.c:844
-#, fuzzy
-msgid "Privilege Parameter"
-msgstr "Braille-Parameter"
-
-#: Programs/menu_prefs.c:1414
+#: Programs/menu_prefs.c:1434
 msgid "Profiles"
 msgstr "Profile"
 
-#: Programs/config.c:640
+#: Programs/config.c:551
 msgid "Properties of eligible keyboards."
 msgstr "Eigenschaften von geeigneten Tastaturen."
 
-#: Programs/menu_prefs.c:950
+#: Programs/spk.c:299
+msgid "Punctuation"
+msgstr "Interpunktion"
+
+#: Programs/menu_prefs.c:952
 msgid "Quick Space"
 msgstr "Doppelhub"
 
-#: Programs/menu_prefs.c:1209
+#: Programs/menu_prefs.c:1229
 msgid "Raise Pitch"
 msgstr "Erhöhe Tonhöhe"
 
-#: Programs/config.c:395
+#: Programs/spk.c:237
+msgid "Rate"
+msgstr ""
+
+#: Programs/brltty-hid.c:181
+msgid "Read (get) a feature report (two hexadecimal digits)."
+msgstr ""
+
+#: Programs/brltty-hid.c:174
+msgid "Read (get) an input report (two hexadecimal digits)."
+msgstr ""
+
+#: Programs/config.c:390
 msgid "Recognize environment variables."
 msgstr "Verwende Umgebungsvariablen."
 
@@ -1512,52 +1592,52 @@ msgstr "Rohrblatt"
 msgid "Reed Organ"
 msgstr "Harmonium"
 
-#: Programs/brltty-ctb.c:82
+#: Programs/brltty-ctb.c:59
 msgid "Reformat input."
 msgstr "Eingabe neu formatieren."
 
-#: Programs/config.c:585
+#: Programs/config.c:443
 msgid "Release braille device when screen or window is unreadable."
 msgstr "Gib die Braillezeile frei wenn der Bildschirm oder das Fenster nicht lesbar ist."
 
-#: Programs/xbrlapi.c:106
+#: Programs/xbrlapi.c:130
 msgid "Remain a foreground process"
 msgstr "Verbleibe als Fordergrundprozess"
 
-#: Programs/config.c:411
+#: Programs/config.c:638
 msgid "Remain a foreground process."
 msgstr "Verbleibe als Fordergrundprozess."
 
-#: Programs/brltty-trtxt.c:73
+#: Programs/brltty-trtxt.c:64
 msgid "Remove dots seven and eight."
 msgstr "Entferne Punkt sieben und acht."
 
-#: Programs/config.c:426
+#: Programs/config.c:781
 #, c-format
 msgid "Remove the %s service, and then exit."
 msgstr "Entferne das Service %s und beende dann."
 
-#: Programs/brltty-ktb.c:45
+#: Programs/brltty-ktb.c:53
 msgid "Report problems with the key table."
 msgstr "Probleme mit der Tastatur-Befehlstabelle melden."
 
-#: Programs/brltty-ttb.c:186
+#: Programs/brltty-ttb.c:176
 msgid "Report the characters within the current screen font that aren't defined within the text table."
 msgstr "Jene Zeichen der aktuellen Bildschirmschriftart melden, welche nicht im aktuellen Braillezeichensatz definiert sind."
 
-#: Programs/menu_prefs.c:866
+#: Programs/menu_prefs.c:868
 msgid "Rest of Line"
 msgstr "Rest der Zeile"
 
-#: Programs/menu_prefs.c:1562
+#: Programs/menu_prefs.c:1582
 msgid "Restart Braille Driver"
 msgstr "Brailletreiber neu starten"
 
-#: Programs/menu_prefs.c:1574
+#: Programs/menu_prefs.c:1594
 msgid "Restart Screen Driver"
 msgstr "Bildschirmtreiber neu starten"
 
-#: Programs/menu_prefs.c:1568
+#: Programs/menu_prefs.c:1588
 msgid "Restart Speech Driver"
 msgstr "Sprachausgabentreiber neu starten"
 
@@ -1566,7 +1646,7 @@ msgstr "Sprachausgabentreiber neu starten"
 msgid "Reverse Cymbal"
 msgstr "Becken Rückseite"
 
-#: Programs/menu_prefs.c:1342
+#: Programs/menu_prefs.c:1362
 msgid "Right"
 msgstr "Rechts"
 
@@ -1575,41 +1655,41 @@ msgstr "Rechts"
 msgid "Rock Organ"
 msgstr "Rock-Orgel"
 
-#: Programs/menu_prefs.c:674
+#: Programs/brltty-pty.c:389
+msgid "Run a shell or terminal manager within a pty (virtual terminal) and export its screen via a shared memory segment so that brltty can read it via its Terminal Emulator screen driver."
+msgstr ""
+
+#: Programs/menu_prefs.c:675
 msgid "Save on Exit"
 msgstr "Beim Verlassen speichern"
 
 #. "cap" here, used during speech output, is short for "capital".
 #. It is spoken just before an uppercase letter, e.g. "cap A".
-#: Programs/menu_prefs.c:1208
+#: Programs/menu_prefs.c:1228
 msgid "Say Cap"
 msgstr "Sprich Groß"
 
-#: Programs/menu_prefs.c:1232
+#: Programs/menu_prefs.c:1252
 msgid "Say Line Mode"
 msgstr "Zeilen-Vorlesemodus"
 
-#: Programs/menu_prefs.c:1219
+#: Programs/menu_prefs.c:1239
 msgid "Say Space"
 msgstr "Sprich Leerzeichen"
 
-#: Programs/menu_prefs.c:780
+#: Programs/menu_prefs.c:781
 msgid "Screen Cursor Blink Period"
 msgstr "Blinkdauer des Bildschirmcursors"
 
-#: Programs/menu_prefs.c:788
+#: Programs/menu_prefs.c:789
 msgid "Screen Cursor Percent Visible"
 msgstr "Anzeigedauer des Bildschirmcursors in Prozent"
 
-#: Programs/menu_prefs.c:768
+#: Programs/menu_prefs.c:769
 msgid "Screen Cursor Style"
 msgstr "Bildschirmcursordarstellung"
 
-#: Programs/config.c:2453
-msgid "Screen Driver"
-msgstr "Bildschirmtreiber"
-
-#: Programs/log.c:160
+#: Programs/log.c:167
 msgid "Screen Driver Events"
 msgstr "Bildschirmtreiberereignisse"
 
@@ -1617,16 +1697,16 @@ msgstr "Bildschirmtreiberereignisse"
 msgid "Screen Number"
 msgstr "Bildschirmnummer"
 
-#: Programs/config.c:2459
-msgid "Screen Parameter"
-msgstr "Bildschirm-Parameter"
-
-#: Programs/config.c:693
+#: Programs/config.c:524
 #, c-format
 msgid "Screen driver code (%s, %s, or one of {%s})."
 msgstr "Bildschirmtreiber Kurzbezeichnung (%s, %s, oder eine von {%s})."
 
-#: Programs/menu_prefs.c:891
+#: Programs/config.c:877
+msgid "Screen reader for those who use a braille device."
+msgstr ""
+
+#: Programs/menu_prefs.c:893
 msgid "Scroll-aware Cursor Navigation"
 msgstr "Scrollsensitive Cursornavigation"
 
@@ -1635,11 +1715,11 @@ msgstr "Scrollsensitive Cursornavigation"
 msgid "Seashore"
 msgstr "Brandung"
 
-#: Programs/log.c:130
+#: Programs/log.c:131
 msgid "Serial I/O"
 msgstr "Serielle E/A"
 
-#: Programs/log.c:124
+#: Programs/log.c:119
 msgid "Server Events"
 msgstr "Server Ereignisse"
 
@@ -1658,49 +1738,73 @@ msgstr "Shamisen"
 msgid "Shanai"
 msgstr "Shanai"
 
-#: Programs/menu_prefs.c:687
+#: Programs/menu_prefs.c:688
 msgid "Show Advanced Submenus"
 msgstr "Zeige erweiterte Untermenüs"
 
-#: Programs/menu_prefs.c:692
+#: Programs/menu_prefs.c:693
 msgid "Show All Items"
 msgstr "Zeige alle Elemente"
 
-#: Programs/menu_prefs.c:796
+#: Programs/menu_prefs.c:797
 msgid "Show Attributes"
 msgstr "Zeige Attribute"
 
-#: Programs/menu_prefs.c:763
+#: Programs/menu_prefs.c:764
 msgid "Show Screen Cursor"
 msgstr "Zeige Bildschirmcursor"
 
-#: Programs/menu_prefs.c:1295
+#: Programs/menu_prefs.c:1315
 msgid "Show Seconds"
 msgstr "Sekunden anzeigen"
 
-#: Programs/menu_prefs.c:1237
+#: Programs/menu_prefs.c:1257
 msgid "Show Speech Cursor"
 msgstr "Zeige Sprachcursor"
 
-#: Programs/menu_prefs.c:682
+#: Programs/menu_prefs.c:683
 msgid "Show Submenu Sizes"
 msgstr "Zeige Größen von Untermenüs"
 
+#: Programs/brltty-hid.c:137
+msgid "Show the device address (USB serial number, Bluetooth device address, etc)."
+msgstr ""
+
+#: Programs/brltty-hid.c:143
+msgid "Show the device name (USB manufacturer and/or product strings, Bluetooth device name, etc)."
+msgstr ""
+
+#: Programs/brltty-hid.c:155
+msgid "Show the host device (usually its absolute path)."
+msgstr ""
+
+#: Programs/brltty-hid.c:149
+msgid "Show the host path (USB topology, Bluetooth host controller address, etc)."
+msgstr ""
+
+#: Programs/brltty-hid.c:131
+msgid "Show the vendor and product identifiers."
+msgstr ""
+
+#: Headers/cmdline_types.h:72
+msgid "Show this usage summary, and then exit."
+msgstr ""
+
 #. Ethnic Instruments
 #. xgettext: This is the name of MIDI musical instrument #105 (in the Ethnic group).
 #: Programs/midi.c:406
 msgid "Sitar"
 msgstr "Sitar"
 
-#: Programs/menu_prefs.c:858
+#: Programs/menu_prefs.c:860
 msgid "Skip Blank Braille Windows"
 msgstr "Leere Braillezeileninhalte überspringen"
 
-#: Programs/menu_prefs.c:852
+#: Programs/menu_prefs.c:854
 msgid "Skip Identical Lines"
 msgstr "Identische Zeilen überspringen"
 
-#: Programs/menu_prefs.c:869
+#: Programs/menu_prefs.c:871
 #, fuzzy
 msgid "Skip Which Blank Braille Windows"
 msgstr "Zu überspringende leere Braille-Inhalte"
@@ -1715,15 +1819,15 @@ msgstr "Geschlagener Bass 1"
 msgid "Slap Bass 2"
 msgstr "Geschlagener Bass 2"
 
-#: Programs/menu_prefs.c:1325
+#: Programs/menu_prefs.c:1345
 msgid "Slash"
 msgstr "Schrägstrich"
 
-#: Programs/menu_prefs.c:874
+#: Programs/menu_prefs.c:876
 msgid "Sliding Braille Window"
 msgstr "überlappende Braillezeilenausschnitte"
 
-#: Programs/menu_prefs.c:1193
+#: Programs/spk.c:280
 msgid "Some"
 msgstr "Einige"
 
@@ -1731,116 +1835,115 @@ msgstr "Einige"
 #. xgettext: This is the name of MIDI musical instrument #65 (in the Reed group).
 #: Programs/midi.c:280
 msgid "Soprano Saxophone"
-msgstr ""
+msgstr "Sopran-Saxophon"
 
 #. xgettext: This is the name of MIDI musical instrument group #16.
 #: Programs/midi.c:74
 msgid "Sound Effects"
 msgstr "Soundeffekte"
 
-#: Programs/menu_prefs.c:561 Programs/menu_prefs.c:1361
+#: Programs/menu_prefs.c:561 Programs/menu_prefs.c:1381
 msgid "Space"
 msgstr "Leer"
 
-#: Programs/menu_prefs.c:1154
+#: Programs/menu_prefs.c:1174
 msgid "Speak Completed Words"
 msgstr "Sprich vervollständigte Wörter"
 
-#: Programs/menu_prefs.c:1142
+#: Programs/menu_prefs.c:1162
 msgid "Speak Deleted Characters"
 msgstr "Sprich gelöschte Zeichen"
 
-#: Programs/menu_prefs.c:1136
+#: Programs/menu_prefs.c:1144
+msgid "Speak Empty Line"
+msgstr ""
+
+#: Programs/menu_prefs.c:1156
 msgid "Speak Inserted Characters"
 msgstr "Sprich eingefügte Zeichen"
 
-#: Programs/menu_prefs.c:1160
+#: Programs/menu_prefs.c:1117
+msgid "Speak Key Context"
+msgstr ""
+
+#: Programs/menu_prefs.c:1180
 msgid "Speak Line Indent"
 msgstr "Zeilen-Einrückung sprechen"
 
-#: Programs/menu_prefs.c:1148
+#: Programs/menu_prefs.c:1122
+msgid "Speak Modifier Key"
+msgstr ""
+
+#: Programs/menu_prefs.c:1168
 msgid "Speak Replaced Characters"
 msgstr "Sprich ersetzte Zeichen"
 
-#: Programs/menu_prefs.c:1130
+#: Programs/menu_prefs.c:1150
 msgid "Speak Selected Character"
 msgstr "Sprich hervorgehobenes Zeichen"
 
-#: Programs/menu_prefs.c:1124
+#: Programs/menu_prefs.c:1138
 msgid "Speak Selected Line"
 msgstr "Sprich hervorgehobene Zeile"
 
-#: Programs/menu_prefs.c:1254
+#: Programs/menu_prefs.c:1274
 msgid "Speech Cursor Blink Period"
 msgstr "Blinkdauer des Sprachcursors"
 
-#: Programs/menu_prefs.c:1262
+#: Programs/menu_prefs.c:1282
 msgid "Speech Cursor Percent Visible"
 msgstr "Anzeigedauer des Sprachcursors in Prozent"
 
-#: Programs/menu_prefs.c:1242
+#: Programs/menu_prefs.c:1262
 msgid "Speech Cursor Style"
 msgstr "Sprachcursordarstellung"
 
-#: Programs/config.c:2228
-msgid "Speech Driver"
-msgstr "Sprachausgabentreiber"
-
-#: Programs/log.c:154
+#: Programs/log.c:161
 msgid "Speech Driver Events"
 msgstr "Ereignisse des Sprachausgabentreibers"
 
-#: Programs/log.c:112
+#: Programs/log.c:107
 msgid "Speech Events"
 msgstr "Sprachausgabenereignisse"
 
-#. Create the file system object for speech input.
-#: Programs/config.c:3023
-msgid "Speech Input"
-msgstr "Spracheingabe"
-
-#: Programs/menu_prefs.c:1167
+#: Programs/menu_prefs.c:1187
 msgid "Speech Options"
 msgstr "Sprachausgabenoptionen"
 
-#: Programs/config.c:2231
-msgid "Speech Parameter"
-msgstr "Sprachausgaben-Parameter"
-
-#: Programs/menu_prefs.c:1184
+#: Programs/menu_prefs.c:1204
 msgid "Speech Pitch"
 msgstr "Tonhöhe"
 
-#: Programs/menu_prefs.c:1197
+#: Programs/menu_prefs.c:1217
 msgid "Speech Punctuation"
 msgstr "Satzzeichenansage"
 
-#: Programs/menu_prefs.c:1177
+#: Programs/menu_prefs.c:1197
 msgid "Speech Rate"
 msgstr "Sprechgeschwindigkeit"
 
-#: Programs/menu_prefs.c:1212
+#: Programs/menu_prefs.c:1232
 msgid "Speech Uppercase Indicator"
 msgstr "Großbuchstabenansage"
 
-#: Programs/menu_prefs.c:1170
+#: Programs/menu_prefs.c:1190
 msgid "Speech Volume"
 msgstr "Sprachlautstärke"
 
-#: Programs/menu_prefs.c:1222
+#: Programs/menu_prefs.c:1242
 msgid "Speech Whitespace Indicator"
 msgstr "Leerraumansage"
 
-#: Programs/config.c:650
+#: Programs/config.c:481
 #, c-format
 msgid "Speech driver code (%s, %s, or one of {%s})."
 msgstr "Sprachausgabentreiber Kurzbezeichnung (%s, %s, oder eine von {%s})."
 
-#: Programs/menu_prefs.c:1509
+#: Programs/menu_prefs.c:1529
 msgid "Standard Error Log Level"
 msgstr "Protokollierungsausführlichkeit für die Standard-Fehlerausgabe"
 
-#: Programs/menu_prefs.c:926
+#: Programs/menu_prefs.c:928
 msgid "Start Selection with Routing Key"
 msgstr "Auswahl durch Cursorrouting-Taste starten"
 
@@ -1852,11 +1955,11 @@ msgstr "Statuspunkte"
 msgid "State Letter"
 msgstr "Statusbuchstabe"
 
-#: Programs/menu_prefs.c:1336
+#: Programs/menu_prefs.c:1356
 msgid "Status Cells"
 msgstr "Statuszellen"
 
-#: Programs/menu_prefs.c:1352
+#: Programs/menu_prefs.c:1372
 msgid "Status Count"
 msgstr "Gesamtanzahl der Statuszellen"
 
@@ -1864,15 +1967,15 @@ msgstr "Gesamtanzahl der Statuszellen"
 msgid "Status Field"
 msgstr "Statusfeld"
 
-#: Programs/menu_prefs.c:1345
+#: Programs/menu_prefs.c:1365
 msgid "Status Position"
 msgstr "Position der Statuszellen"
 
-#: Programs/menu_prefs.c:1367
+#: Programs/menu_prefs.c:1387
 msgid "Status Separator"
 msgstr "Status-Trennzeichen"
 
-#: Programs/menu_prefs.c:1363
+#: Programs/menu_prefs.c:1383
 msgid "Status Side"
 msgstr "Statusseitig"
 
@@ -1881,7 +1984,7 @@ msgstr "Statusseitig"
 msgid "Steel Drums"
 msgstr "Steel Drums"
 
-#: Programs/config.c:450
+#: Programs/config.c:767
 #, c-format
 msgid "Stop an existing instance of %s, and then exit."
 msgstr "Stoppe eine laufende Instanz von %s und beende dann."
@@ -1902,14 +2005,18 @@ msgstr "Saiten Ensemble 2"
 msgid "Strings"
 msgstr "Saiteninstrumente"
 
-#: Programs/menu_prefs.c:722
+#: Programs/menu_prefs.c:723
 msgid "Superimpose Dot 7"
 msgstr "Punkt 7 hinzufügen"
 
-#: Programs/config.c:744
+#: Programs/config.c:609
 msgid "Suppress start-up messages."
 msgstr "Unterdrücke Meldungen zum Startvorgang."
 
+#: Programs/cmdline.c:243
+msgid "Syntax"
+msgstr "Syntax"
+
 #. xgettext: This is the name of MIDI musical instrument #39 (in the Bass group).
 #: Programs/midi.c:198
 msgid "Synth Bass 1"
@@ -1969,11 +2076,11 @@ msgstr "Synth Saiteninstrumente 1"
 msgid "SynthStrings 2"
 msgstr "Synth Saiteninstrumente 2"
 
-#: Programs/menu_prefs.c:1504
+#: Programs/menu_prefs.c:1524
 msgid "System Log Level"
 msgstr "System-Protokollierungsausführlichkeit"
 
-#: Programs/config.c:2977 Programs/menu_prefs.c:1478
+#: Programs/menu_prefs.c:1498
 msgid "Tables Directory"
 msgstr "Tabellenverzeichnis"
 
@@ -1997,27 +2104,59 @@ msgstr "Telefonklingeln"
 msgid "Tenor Saxophone"
 msgstr ""
 
-#: Programs/menu_prefs.c:760
+#: Programs/apitest.c:482
+msgid "Test BrlAPI functions."
+msgstr ""
+
+#: Programs/brltest.c:100
+msgid "Test a braille driver."
+msgstr ""
+
+#: Programs/scrtest.c:137
+msgid "Test a screen driver."
+msgstr ""
+
+#: Programs/spktest.c:115
+msgid "Test a speech driver."
+msgstr ""
+
+#: Programs/msgtest.c:251
+msgid "Test message localization using the message catalog reader."
+msgstr ""
+
+#: Programs/crctest.c:121
+msgid "Test supported CRC (Cyclic Redundancy Check) checksum algorithms."
+msgstr ""
+
+#: Programs/menu_prefs.c:761
 msgid "Text Indicators"
 msgstr "Darstellungsform"
 
-#: Programs/menu_prefs.c:1364
+#: Programs/menu_prefs.c:1384
 msgid "Text Side"
 msgstr "Textseitig"
 
-#: Programs/config.c:1003 Programs/menu_prefs.c:1392
+#: Programs/menu_prefs.c:1412
 msgid "Text Table"
 msgstr "Texttabelle"
 
-#: Programs/brltty-ctb.c:69
+#: Programs/brltty-ctb.c:80
 msgid "Text table."
 msgstr "Texttabelle."
 
-#: Programs/config.c:381
+#: Programs/brltty-cldr.c:42
+msgid "The format of each output line."
+msgstr ""
+
+#: Programs/brltty-hid.c:208
+msgid "The input timeout (in seconds)."
+msgstr ""
+
+#: Programs/config.c:669
 msgid "The text to be shown when the braille driver starts and to be spoken when the speech driver starts."
 msgstr "Text der angezeigt und/oder gesprochen werden soll, wenn der Braille- und/oder Sprachausgabentreiber gestartet wird."
 
-#: Programs/config.c:388
+#: Programs/config.c:676
 msgid "The text to be shown when the braille driver stops."
 msgstr "Text der gezeigt werden soll wenn der Brailletreiber angehalten wird."
 
@@ -2025,15 +2164,15 @@ msgstr "Text der gezeigt werden soll wenn der Brailletreiber angehalten wird."
 msgid "Time"
 msgstr "Uhrzeit"
 
-#: Programs/menu_prefs.c:1280
+#: Programs/menu_prefs.c:1300
 msgid "Time Format"
 msgstr "Zeitformat"
 
-#: Programs/menu_prefs.c:1272
+#: Programs/menu_prefs.c:1292
 msgid "Time Presentation"
 msgstr "Zeitanzeige"
 
-#: Programs/menu_prefs.c:1290
+#: Programs/menu_prefs.c:1310
 msgid "Time Separator"
 msgstr "Uhrzeit-Trennzeichen"
 
@@ -2048,27 +2187,35 @@ msgstr "Pauken"
 msgid "Tinkle Bell"
 msgstr "Glöckchen"
 
-#: Programs/menu_prefs.c:1558
+#: Programs/menu_prefs.c:1578
 msgid "Tools"
 msgstr "Werkzeuge"
 
-#: Programs/menu_prefs.c:1003
+#: Programs/menu_prefs.c:1005
 msgid "Touch Navigation"
 msgstr "Berührungsbasierte Navigation"
 
-#: Programs/menu_prefs.c:1017
+#: Programs/menu_prefs.c:1019
 msgid "Touch Sensitivity"
 msgstr "Berührungsempfindlichkeit"
 
-#: Programs/menu_prefs.c:915
+#: Programs/menu_prefs.c:917
 msgid "Track Screen Pointer"
 msgstr "Mauszeigerverfolgung"
 
-#: Programs/menu_prefs.c:909
+#: Programs/menu_prefs.c:911
 msgid "Track Screen Scroll"
 msgstr "Bildschirmscrollverfolgung"
 
-#: Programs/menu_prefs.c:941
+#: Programs/brltty-trtxt.c:239
+msgid "Translate one binary braille representation to another."
+msgstr ""
+
+#: Programs/brltty-morse.c:136
+msgid "Translate text into Morse Code tones."
+msgstr ""
+
+#: Programs/menu_prefs.c:943
 msgid "Translated via Text Table"
 msgstr "Durch Texttabelle übersetzt"
 
@@ -2098,15 +2245,15 @@ msgstr "Tuba"
 msgid "Tubular Bells"
 msgstr "Röhrenglocken"
 
-#: Programs/menu_prefs.c:1062
+#: Programs/menu_prefs.c:1064
 msgid "Tune Device"
 msgstr "Tongeber"
 
-#: Programs/menu_prefs.c:945
+#: Programs/menu_prefs.c:947
 msgid "Typing Mode"
 msgstr "Eingabe-Modus"
 
-#: Programs/log.c:136
+#: Programs/log.c:137
 msgid "USB I/O"
 msgstr "USB E/A"
 
@@ -2114,23 +2261,19 @@ msgstr "USB E/A"
 msgid "Underline"
 msgstr "Unterlegung"
 
-#: Programs/alert.c:102
+#: Programs/alert.c:108
 msgid "Unfrozen"
 msgstr "Aufgetaut"
 
-#: Programs/config.c:2974 Programs/menu_prefs.c:1458
+#: Programs/menu_prefs.c:1478
 msgid "Updatable Directory"
 msgstr "Modifizierbares Verzeichnis"
 
-#: Programs/log.c:106
+#: Programs/log.c:101
 msgid "Update Events"
 msgstr "Update Ereignisse"
 
-#: Programs/options.c:197
-msgid "Usage"
-msgstr "Benutzung"
-
-#: Programs/menu_prefs.c:721
+#: Programs/menu_prefs.c:722
 msgid "Use Capital Sign"
 msgstr "Verwende Großschreibungszeichen"
 
@@ -2155,11 +2298,15 @@ msgstr "Violine"
 msgid "Voice Oohs"
 msgstr "Stimme (Ooh)"
 
-#: Programs/menu_prefs.c:1494
+#: Programs/spk.c:211
+msgid "Volume"
+msgstr ""
+
+#: Programs/menu_prefs.c:1514
 msgid "Warning"
 msgstr "Warnung"
 
-#: Programs/menu_prefs.c:1438
+#: Programs/menu_prefs.c:1458
 msgid "Web Site"
 msgstr "Webseite"
 
@@ -2185,27 +2332,39 @@ msgstr "Braillezielenzeile"
 msgid "Woodblock"
 msgstr "Holzblock"
 
-#: Programs/menu_prefs.c:848
+#: Programs/menu_prefs.c:849
 msgid "Word Wrap"
 msgstr "Wortumbruch"
 
-#: Programs/config.c:2948
-msgid "Working Directory"
-msgstr "Arbeitsverzeichnis"
-
-#: Programs/config.c:2975 Programs/menu_prefs.c:1468
+#: Programs/menu_prefs.c:1488
 msgid "Writable Directory"
 msgstr "Verzeichnis mit Schreibzugriff"
 
-#: Programs/xbrlapi.c:118
+#: Programs/brltty-hid.c:195
+msgid "Write (set) a feature report (see below)."
+msgstr ""
+
+#: Programs/brltty-hid.c:188
+msgid "Write (set) an output report (see below)."
+msgstr ""
+
+#: Programs/brltty-lscmds.c:254
+msgid "Write a brltty command reference in reStructuredText."
+msgstr ""
+
+#: Programs/xbrlapi.c:124
 msgid "Write debugging output to stdout"
 msgstr ""
 
-#: Programs/config.c:767
+#: Programs/tbl2hex.c:215
+msgid "Write the hexadecimal array representation of a compiled table."
+msgstr ""
+
+#: Programs/config.c:788
 msgid "Write the start-up logs, and then exit."
 msgstr "Schreibe das Startprotokoll und beende dann."
 
-#: Programs/xbrlapi.c:100
+#: Programs/xbrlapi.c:112
 msgid "X display to connect to"
 msgstr "X Display mit dem Verbindung aufgenommen werden soll"
 
@@ -2221,12 +2380,16 @@ msgstr "XDG-Laufzeitverzeichnis erstellt"
 msgid "XDG runtime directory exists"
 msgstr "XDG-Laufzeitverzeichnis existiert"
 
-#: Programs/xbrlapi.c:786
+#: Programs/xbrlapi.c:960
+msgid "XFree(wm_command) for change"
+msgstr ""
+
+#: Programs/xbrlapi.c:941
 msgid "XFree(wm_name) for change"
 msgstr ""
 
 #. xgettext: This is the description of the PASSXT command.
-#: Programs/cmds.auto.h:1479
+#: Programs/cmds.auto.h:1495
 msgid "XT (set 1) keyboard scan code"
 msgstr "XT (set 1) Tastatur-Scancode"
 
@@ -2235,7 +2398,7 @@ msgstr "XT (set 1) Tastatur-Scancode"
 msgid "Xylophone"
 msgstr "Xylophon"
 
-#: Programs/menu_prefs.c:1312
+#: Programs/menu_prefs.c:1332
 msgid "Year Month Day"
 msgstr "Jahr Monat Tag"
 
@@ -2243,7 +2406,7 @@ msgstr "Jahr Monat Tag"
 msgid "Yes"
 msgstr "Ja"
 
-#: Programs/xbrlapi.c:84
+#: Programs/xbrlapi.c:96
 msgid "[host][:port]"
 msgstr "[Host][:Port]"
 
@@ -2256,30 +2419,30 @@ msgid "and"
 msgstr "und"
 
 #. xgettext: This is the description of the CLIP_APPEND command.
-#: Programs/cmds.auto.h:1346
+#: Programs/cmds.auto.h:1353
 msgid "append characters to clipboard"
 msgstr "hänge Zeichenkette an die Zwischenablage an"
 
 #. xgettext: This is the description of the CLIP_ADD command.
-#: Programs/cmds.auto.h:1223
+#: Programs/cmds.auto.h:1230
 msgid "append to clipboard from character"
 msgstr "hänge ab Zeichen an die Zwischenablage an"
 
-#: Programs/cmd.c:290
+#: Programs/cmd.c:291
 msgid "at cursor"
 msgstr "beim Cursor"
 
 #. xgettext: This is the description of the KEY_BACKSPACE command.
-#: Programs/cmds.auto.h:1527
+#: Programs/cmds.auto.h:1559
 msgid "backspace key"
 msgstr "Rücktaste"
 
-#: Drivers/Braille/Baum/braille.c:1149 Drivers/Braille/TSI/braille.c:869
+#: Drivers/Braille/Baum/braille.c:1150 Drivers/Braille/TSI/braille.c:869
 msgid "battery low"
 msgstr "Akku schwach"
 
 #. xgettext: This is the description of the SELECTVT command.
-#: Programs/cmds.auto.h:1437
+#: Programs/cmds.auto.h:1453
 msgid "bind to specific virtual terminal"
 msgstr "an ein bestimmtes virtuellen Terminal anbinden"
 
@@ -2294,24 +2457,28 @@ msgid "bind to the previous virtual terminal"
 msgstr "an das vorhergehende virtuelle Terminal anbinden"
 
 #.
-#: Programs/cmd_utils.c:144
+#: Programs/cmd_utils.c:160
 msgid "black"
 msgstr "Schwarz"
 
-#: Programs/core.c:1125
+#: Programs/update.c:1021
+msgid "blank"
+msgstr "leer"
+
+#: Programs/core.c:1157
 msgid "blank line"
 msgstr "leere Zeile"
 
-#: Programs/cmd_utils.c:173
+#: Programs/cmd_utils.c:189
 msgid "blinking"
 msgstr ""
 
 #. B
-#: Programs/cmd_utils.c:145
+#: Programs/cmd_utils.c:161
 msgid "blue"
 msgstr "Blau"
 
-#: Programs/config.c:2993
+#: Programs/config.c:3104
 #, c-format
 msgid "braille device not specified"
 msgstr "Braillegerät nicht spezifiziert"
@@ -2321,15 +2488,11 @@ msgstr "Braillegerät nicht spezifiziert"
 msgid "braille display temporarily unavailable"
 msgstr "Braillezeile vorübergehend nicht verfügbar"
 
-#: Programs/config.c:1737
-msgid "braille driver initialization failed"
-msgstr "Initialisierung des Brailletreibers fehlgeschlagen"
-
-#: Programs/config.c:1816
+#: Programs/config.c:1942
 msgid "braille driver not loadable"
 msgstr "Brailletreiber kann nicht geladen werden"
 
-#: Programs/config.c:2077
+#: Programs/config.c:2203
 msgid "braille driver restarting"
 msgstr "Braille Treiber wird neu gestartet"
 
@@ -2342,7 +2505,7 @@ msgid "braille released"
 msgstr "Braille freigegeben"
 
 #. xgettext: This is the description of the ROUTE command.
-#: Programs/cmds.auto.h:1207
+#: Programs/cmds.auto.h:1214
 msgid "bring screen cursor to character"
 msgstr "Bewege Bildschirmcursor zu Zeichen"
 
@@ -2352,7 +2515,7 @@ msgid "bring screen cursor to current line"
 msgstr "Bewege Bildschirmcursor zur aktuellen Braillezeilenposition"
 
 #. xgettext: This is the description of the ROUTE_LINE command.
-#: Programs/cmds.auto.h:1404
+#: Programs/cmds.auto.h:1411
 msgid "bring screen cursor to line"
 msgstr "Bewege Bildschirmcursor zu Zeile"
 
@@ -2361,29 +2524,38 @@ msgstr "Bewege Bildschirmcursor zu Zeile"
 msgid "bring screen cursor to speech cursor"
 msgstr "Bewege Bildschirmcursor zur Sprachcursorposition"
 
+#. xgettext: This is the description of the ROUTE_SPEECH command.
+#: Programs/cmds.auto.h:1445
+msgid "bring speech cursor to character"
+msgstr ""
+
 #. RG
-#: Programs/cmd_utils.c:150
+#: Programs/cmd_utils.c:166
 msgid "brown"
 msgstr "Braun"
 
-#: Drivers/Screen/Linux/screen.c:1432
+#: Programs/brltty-hid.c:186 Programs/brltty-hid.c:193
+msgid "bytes"
+msgstr "Bytes"
+
+#: Drivers/Screen/Linux/screen.c:1486
 msgid "can't get console state"
-msgstr ""
+msgstr "Kann den Konsolenzustand nicht abrufen"
 
-#: Drivers/Screen/Linux/screen.c:1510
+#: Drivers/Screen/Linux/screen.c:1564
 msgid "can't open console"
 msgstr "kann console nicht öffnen"
 
-#: Drivers/Screen/Linux/screen.c:1556
+#: Drivers/Screen/Linux/screen.c:1610
 msgid "can't read screen content"
 msgstr "kann Bildschirminhalt nicht lesen"
 
-#: Drivers/Screen/Linux/screen.c:1601
+#: Drivers/Screen/Linux/screen.c:1655
 #, fuzzy
 msgid "can't read screen header"
 msgstr "Bildschirmtreiber starten"
 
-#: Programs/ctb_translate.c:393
+#: Programs/ctb_translate.c:406
 msgid "cannot access internal contraction table"
 msgstr ""
 
@@ -2391,18 +2563,14 @@ msgstr ""
 msgid "cannot compile attributes table"
 msgstr "kann Attributtabelle nicht kompilieren"
 
-#: Programs/ctb_translate.c:387
+#: Programs/ctb_translate.c:400
 msgid "cannot compile contraction table"
 msgstr "kann Kurzschrifttabelle nicht kompilieren"
 
-#: Programs/config.c:1720
+#: Programs/config.c:1844
 msgid "cannot compile key table"
 msgstr "kann Tastentabelle nicht kompilieren"
 
-#: Programs/config.c:1284
-msgid "cannot compile keyboard table"
-msgstr "kann Tastentabelle nicht kompilieren"
-
 #: Programs/ttb_translate.c:275
 msgid "cannot compile text table"
 msgstr "kann Texttabelle nicht kompilieren"
@@ -2412,26 +2580,26 @@ msgstr "kann Texttabelle nicht kompilieren"
 #. * running xbrlapi by hand, but not fill logs, eat battery, spam
 #. * 127.0.0.1 with reconnection attempts.
 #.
-#: Programs/xbrlapi.c:204
+#: Programs/xbrlapi.c:230
 #, c-format
 msgid "cannot connect to braille devices daemon brltty at %s\n"
 msgstr "Kann nicht mit Braillegerätedienst brltty via %s verbinden\n"
 
-#: Programs/xbrlapi.c:654
+#: Programs/xbrlapi.c:802
 #, c-format
 msgid "cannot connect to display %s\n"
 msgstr "kann mit Braillezeile %s nicht verbinden\n"
 
-#: Programs/file.c:381
+#: Programs/file.c:437
 msgid "cannot create directory"
 msgstr "kann Verzeichnis nicht erstellen"
 
-#: Programs/program.c:150
+#: Programs/program.c:151
 #, c-format
 msgid "cannot determine program directory"
 msgstr "kann Programmverzeichnis nicht bestimmen"
 
-#: Programs/config.c:2951 Programs/menu.c:618
+#: Programs/config.c:3062 Programs/menu.c:618
 msgid "cannot determine working directory"
 msgstr "kann Arbeitsverzeichnis nicht bestimmen"
 
@@ -2439,29 +2607,29 @@ msgstr "kann Arbeitsverzeichnis nicht bestimmen"
 msgid "cannot find procedure"
 msgstr "kann Prozedur nicht finden"
 
-#: Programs/program.c:158
+#: Programs/program.c:165
 msgid "cannot fix install path"
 msgstr "kann Installationspfad nicht beheben"
 
-#: Programs/xbrlapi.c:259
+#: Programs/xbrlapi.c:285
 msgid "cannot get tty\n"
 msgstr ""
 
-#: Programs/xbrlapi.c:265
+#: Programs/xbrlapi.c:291
 #, c-format
 msgid "cannot get tty %d\n"
 msgstr ""
 
-#: Programs/file.c:518
+#: Programs/file.c:576
 msgid "cannot get working directory"
 msgstr "kann Arbeitsverzeichnis nicht erfragen"
 
-#: Programs/xbrlapi.c:702
+#: Programs/xbrlapi.c:853
 #, c-format
 msgid "cannot grab windows on screen %d\n"
 msgstr ""
 
-#: Programs/xbrlapi.c:272
+#: Programs/xbrlapi.c:298
 msgid "cannot ignore keys\n"
 msgstr "kann tasten nicht ignorieren\n"
 
@@ -2469,7 +2637,7 @@ msgstr "kann tasten nicht ignorieren\n"
 msgid "cannot load attributes table"
 msgstr "kann Attributtabelle nicht laden"
 
-#: Programs/ctb_translate.c:407
+#: Programs/ctb_translate.c:420
 msgid "cannot load contraction table"
 msgstr ""
 
@@ -2481,16 +2649,16 @@ msgstr "kann Programmbibliothek nicht laden"
 msgid "cannot load text table"
 msgstr "kann Texttabelle nicht laden"
 
-#: Programs/file.c:370
+#: Programs/file.c:426
 #, fuzzy
 msgid "cannot make world writable"
 msgstr "kann Tastentabelle nicht kompilieren"
 
-#: Programs/config.c:1239
+#: Programs/config.c:1277
 msgid "cannot open key help"
 msgstr "kann Tastenhilfe nicht öffnen"
 
-#: Programs/program.c:262
+#: Programs/program.c:289
 msgid "cannot open process identifier file"
 msgstr "kann Prozessidentifikationsdatei nicht öffnen"
 
@@ -2502,12 +2670,12 @@ msgstr "kann Arbeitsverzeichnis nicht öffnen"
 msgid "cannot read preferences file"
 msgstr "kann Einstellungsdatei nicht lesen"
 
-#: Programs/xbrlapi.c:337
+#: Programs/xbrlapi.c:363
 #, c-format
 msgid "cannot set focus to %#010x\n"
 msgstr "kann Fokus nicht auf %#010x setzen\n"
 
-#: Programs/file.c:532 Programs/menu.c:605
+#: Programs/file.c:590 Programs/menu.c:605
 msgid "cannot set working directory"
 msgstr "kann Arbeitsverzeichnis nicht wechseln"
 
@@ -2517,18 +2685,22 @@ msgstr "kann Einstellungsdatei nicht schreiben"
 
 #. "cap" here, used during speech output, is short for "capital".
 #. It is spoken just before an uppercase letter, e.g. "cap A".
-#: Programs/core.c:1070
+#: Programs/core.c:1086
 msgid "cap"
 msgstr "Groß"
 
-#: Programs/menu_prefs.c:886 Programs/menu_prefs.c:1353
+#: Programs/menu_prefs.c:888 Programs/menu_prefs.c:1373
 msgid "cells"
 msgstr "Zellen"
 
-#: Programs/cmd_preferences.c:87
+#: Programs/cmd_preferences.c:95
 msgid "changes discarded"
 msgstr "Änderungen verworfen"
 
+#: Programs/brltty-ktb.c:290
+msgid "check a key table, list the key naems it can use, or write the key bindings it defines in useful formats."
+msgstr ""
+
 #. xgettext: This is the description of the UNSTICK command.
 #: Programs/cmds.auto.h:887
 msgid "clear all sticky input modifiers"
@@ -2539,29 +2711,33 @@ msgstr "alle eingerasteten Steuertasten löschen"
 msgid "clear the text selection"
 msgstr ""
 
-#: Programs/cmd_speech.c:501
+#: Programs/cmd_speech.c:515
 msgid "column"
 msgstr "Spalte"
 
+#: Programs/brltty-pty.c:240
+msgid "command not found"
+msgstr "Befehl nicht gefunden"
+
 #. configuration menu
 #: Drivers/Braille/BrailleLite/braille.c:607
 msgid "config"
-msgstr ""
+msgstr "Konfiguration"
 
-#: Programs/options.c:812
+#: Programs/cmdline.c:944
 msgid "configuration directive specified more than once"
 msgstr "Konfigurationsdirektive mehrfach angegeben"
 
-#: Drivers/Screen/Linux/screen.c:1508
+#: Drivers/Screen/Linux/screen.c:1562
 msgid "console not in use"
 msgstr "Konsole nicht in Verwendung"
 
-#: Programs/menu_prefs.c:1056
+#: Programs/menu_prefs.c:1058
 msgid "console tone generator"
 msgstr "Konsolen-Tongenerator"
 
 #. xgettext: This is the description of the CLIP_COPY command.
-#: Programs/cmds.auto.h:1338
+#: Programs/cmds.auto.h:1345
 msgid "copy characters to clipboard"
 msgstr "kopiere Zeichenkette in die Zwischenablage"
 
@@ -2571,42 +2747,42 @@ msgstr "kopiere Zeichenkette in die Zwischenablage"
 msgid "copy selected text to host clipboard"
 msgstr "kopiere Zeichenkette in die Zwischenablage"
 
-#: Programs/config.c:729
+#: Programs/config.c:660
 msgid "csecs"
 msgstr ""
 
 #. xgettext: This is the description of the TOUCH_AT command.
-#: Programs/cmds.auto.h:1503
+#: Programs/cmds.auto.h:1519
 msgid "current reading location"
 msgstr "aktuelle Leseposition"
 
 #. xgettext: This is the description of the KEY_CURSOR_DOWN command.
-#: Programs/cmds.auto.h:1567
+#: Programs/cmds.auto.h:1599
 msgid "cursor-down key"
 msgstr "Pfeil-Runter-Taste"
 
 #. xgettext: This is the description of the KEY_CURSOR_LEFT command.
-#: Programs/cmds.auto.h:1543
+#: Programs/cmds.auto.h:1575
 msgid "cursor-left key"
 msgstr "Pfeil-Links-Taste"
 
 #. xgettext: This is the description of the KEY_CURSOR_RIGHT command.
-#: Programs/cmds.auto.h:1551
+#: Programs/cmds.auto.h:1583
 msgid "cursor-right key"
 msgstr "Pfeil-Rechts-Taste"
 
 #. xgettext: This is the description of the KEY_CURSOR_UP command.
-#: Programs/cmds.auto.h:1559
+#: Programs/cmds.auto.h:1591
 msgid "cursor-up key"
 msgstr "Pfeil-Rauf-Taste"
 
 #. xgettext: This is the description of the HOST_CUT command.
 #: Programs/cmds.auto.h:1040
 msgid "cut selected text to host clipboard"
-msgstr ""
+msgstr "ausgewählten Text in die Zwischenablage des Hosts kopieren"
 
 #. GB
-#: Programs/cmd_utils.c:147
+#: Programs/cmd_utils.c:163
 msgid "cyan"
 msgstr "Zyan"
 
@@ -2641,7 +2817,7 @@ msgid "cycle the Upper sticky input modifier (next, on, off)"
 msgstr "Einrastfunktion der Feststelltaste umschalten (ändern, ein, aus)"
 
 #. L
-#: Programs/cmd_utils.c:152
+#: Programs/cmd_utils.c:168
 msgid "dark grey"
 msgstr "Dunkelgrau"
 
@@ -2661,12 +2837,12 @@ msgid "decrease speaking volume"
 msgstr "leiser sprechen"
 
 #. xgettext: This is the description of the KEY_DELETE command.
-#: Programs/cmds.auto.h:1615
+#: Programs/cmds.auto.h:1647
 msgid "delete key"
 msgstr "Entfernen-Taste"
 
 #. xgettext: This is the description of the DESCCHAR command.
-#: Programs/cmds.auto.h:1275
+#: Programs/cmds.auto.h:1282
 msgid "describe character"
 msgstr "beschreibe Zeichen"
 
@@ -2675,18 +2851,18 @@ msgstr "beschreibe Zeichen"
 msgid "describe current character"
 msgstr "beschreibe aktuelles Zeichen"
 
-#: Programs/config.c:710 Programs/config.c:720
+#: Programs/config.c:690 Programs/config.c:700
 msgid "device"
 msgstr "Gerät"
 
-#: Programs/brltest.c:64 Programs/brltest.c:74 Programs/brltty-atb.c:32
-#: Programs/brltty-ctb.c:50 Programs/brltty-ktb.c:69 Programs/brltty-ktb.c:79
-#: Programs/brltty-trtxt.c:47 Programs/config.c:400 Programs/config.c:500
-#: Programs/config.c:510 Programs/config.c:520 Programs/config.c:591
+#: Programs/brltest.c:61 Programs/brltest.c:79 Programs/brltty-atb.c:31
+#: Programs/brltty-ctb.c:92 Programs/brltty-ktb.c:76 Programs/brltty-ktb.c:85
+#: Programs/brltty-trtxt.c:75 Programs/config.c:709 Programs/config.c:719
+#: Programs/config.c:729 Programs/config.c:739 Programs/config.c:748
 msgid "directory"
 msgstr "Verzeichnis"
 
-#: Programs/xbrlapi.c:98
+#: Programs/xbrlapi.c:110
 msgid "display"
 msgstr "display"
 
@@ -2711,21 +2887,25 @@ msgstr "Punkt 8"
 msgid "dots 7 and 8"
 msgstr "Punkte 7 und 8"
 
-#: Drivers/Braille/Baum/braille.c:1146
+#: Programs/brltty-ktb.c:45
+msgid "driver"
+msgstr ""
+
+#: Drivers/Braille/Baum/braille.c:1147
 msgid "driver request"
 msgstr "Treiberanfrage"
 
-#: Programs/config.c:549 Programs/config.c:647 Programs/config.c:690
+#: Programs/config.c:407 Programs/config.c:478 Programs/config.c:521
 msgid "driver,..."
 msgstr "Treiber,..."
 
 #. xgettext: This is the description of the KEY_END command.
-#: Programs/cmds.auto.h:1599
+#: Programs/cmds.auto.h:1631
 msgid "end key"
 msgstr "Ende-Taste"
 
 #. xgettext: This is the description of the KEY_ENTER command.
-#: Programs/cmds.auto.h:1511
+#: Programs/cmds.auto.h:1543
 msgid "enter key"
 msgstr "Eingabetaste"
 
@@ -2750,11 +2930,11 @@ msgid "enter/leave status display"
 msgstr "Aufrufen/Verlassen der Statusanzeige"
 
 #. xgettext: This is the description of the KEY_ESCAPE command.
-#: Programs/cmds.auto.h:1535
+#: Programs/cmds.auto.h:1567
 msgid "escape key"
 msgstr "Escape-Taste"
 
-#: Drivers/Braille/Iris/braille.c:1494
+#: Drivers/Braille/Iris/braille.c:1497
 msgid "eurobraille"
 msgstr "Eurobraille"
 
@@ -2763,53 +2943,75 @@ msgstr "Eurobraille"
 msgid "exactly"
 msgstr "genau"
 
-#: Programs/config.c:873
+#: Programs/config.c:894
 msgid "excess argument"
 msgstr "überschüssiges Argument"
 
+#. xgettext: This is the description of the MACRO command.
+#: Programs/cmds.auto.h:1527
+msgid "execute command macro"
+msgstr ""
+
 #. parent
-#: Programs/brltty.c:177
+#: Programs/brltty.c:219
 #, c-format
 msgid "executing \"%s\" (from \"%s\")\n"
 msgstr "führe \"%s\" (von \"%s\") aus\n"
 
-#: Programs/pgmprivs_linux.c:2045
+#: Programs/pgmprivs_linux.c:2047
 msgid "executing as the invoking user"
 msgstr ""
 
 #. execv() shouldn't return
-#: Programs/brltty.c:184
+#: Programs/brltty.c:226
 #, c-format
 msgid "execution of \"%s\" failed: %s\n"
 msgstr "Ausführen von \"%s\" fehlgeschlagen: %s\n"
 
-#: Programs/xbrlapi.c:709
+#: Programs/xbrlapi.c:860
 msgid "failed to get first focus\n"
 msgstr ""
 
-#: Programs/brltty-trtxt.c:56 Programs/brltty-trtxt.c:64 Programs/config.c:457
-#: Programs/config.c:466 Programs/config.c:476 Programs/config.c:602
-#: Programs/config.c:612 Programs/config.c:621 Programs/config.c:629
-#: Programs/config.c:666 Programs/config.c:759
+#: Programs/brltty-trtxt.c:47 Programs/brltty-trtxt.c:55 Programs/config.c:396
+#: Programs/config.c:450 Programs/config.c:460 Programs/config.c:469
+#: Programs/config.c:497 Programs/config.c:540 Programs/config.c:564
+#: Programs/config.c:573 Programs/config.c:624 Programs/config.c:758
+#: Programs/xbrlapi.c:135 Programs/xbrlapi.c:142
 msgid "file"
 msgstr "Datei"
 
-#: Programs/options.c:998
+#: Programs/cmdline.c:1130
 #, c-format
 msgid "file '%s' processing error."
 msgstr "Verarbeitungsfehler in Datei '%s'."
 
+#: Drivers/Screen/FileViewer/screen.c:177
+msgid "file not specified"
+msgstr ""
+
+#: Programs/xbrlapi.c:137
+msgid "file to write the name of the focused command to"
+msgstr ""
+
+#: Programs/xbrlapi.c:144
+msgid "file to write the name of the focused window to"
+msgstr ""
+
 #. failed
-#: Programs/brltty.c:172
+#: Programs/brltty.c:214
 #, c-format
 msgid "fork of \"%s\" failed: %s\n"
 msgstr ""
 
 #. xgettext: This is the description of the KEY_FUNCTION command.
-#: Programs/cmds.auto.h:1624
+#: Programs/cmds.auto.h:1656
 msgid "function key"
 msgstr "Funktionstaste"
 
+#: Programs/log.c:125
+msgid "generic I/O"
+msgstr ""
+
 #. xgettext: This is the description of the BACK command.
 #: Programs/cmds.auto.h:271
 msgid "go back after cursor tracking"
@@ -2857,7 +3059,7 @@ msgid "go down to last item"
 msgstr "Gehe nach unten zum letzten Element"
 
 #. xgettext: This is the description of the NXDIFCHAR command.
-#: Programs/cmds.auto.h:1330
+#: Programs/cmds.auto.h:1337
 msgid "go down to nearest line with different character"
 msgstr "Gehe zu nächster Zeile mit anderem Zeichen"
 
@@ -2872,7 +3074,7 @@ msgid "go down to nearest line with different highlighting"
 msgstr "Gehe zu nächster Zeile mit anderer Hervorhebung"
 
 #. xgettext: This is the description of the NXINDENT command.
-#: Programs/cmds.auto.h:1267
+#: Programs/cmds.auto.h:1274
 msgid "go down to nearest line with less indent than character"
 msgstr "Gehe zu nächster Zeile mit weniger Einrückung als Zeichen"
 
@@ -3007,7 +3209,7 @@ msgid "go to previous menu level"
 msgstr "Gehe zur vorherigen Menüebene"
 
 #. xgettext: This is the description of the GOTOMARK command.
-#: Programs/cmds.auto.h:1300
+#: Programs/cmds.auto.h:1307
 msgid "go to remembered braille window position"
 msgstr "Gehe zu gespeicherter Braillezeilenposition"
 
@@ -3022,7 +3224,7 @@ msgid "go to screen cursor or go back after cursor tracking"
 msgstr "Gehe zum Bildschirmcursor oder gehe zurück nach Cursorverfolgung"
 
 #. xgettext: This is the description of the GOTOLINE command.
-#: Programs/cmds.auto.h:1310
+#: Programs/cmds.auto.h:1317
 msgid "go to selected line"
 msgstr "Gehe zu hervorgehobener Zeile"
 
@@ -3058,7 +3260,7 @@ msgid "go up to first line of paragraph"
 msgstr "Gehe zur ersten Zeile des Absatzes"
 
 #. xgettext: This is the description of the PRDIFCHAR command.
-#: Programs/cmds.auto.h:1320
+#: Programs/cmds.auto.h:1327
 msgid "go up to nearest line with different character"
 msgstr "Gehe zu vorheriger Zeile mit anderem Zeichen"
 
@@ -3073,7 +3275,7 @@ msgid "go up to nearest line with different highlighting"
 msgstr "Gehe zu vorheriger Zeile mit anderer Hervorhebung"
 
 #. xgettext: This is the description of the PRINDENT command.
-#: Programs/cmds.auto.h:1257
+#: Programs/cmds.auto.h:1264
 msgid "go up to nearest line with less indent than character"
 msgstr "Gehe zu vorheriger Zeile mit weniger Einrückung als Zeichen"
 
@@ -3088,11 +3290,11 @@ msgid "go up to previous item"
 msgstr "Gehe nach oben zum vorherigen Element"
 
 #. G
-#: Programs/cmd_utils.c:146
+#: Programs/cmd_utils.c:162
 msgid "green"
 msgstr "Grün"
 
-#: Programs/pgmprivs_linux.c:2167
+#: Programs/pgmprivs_linux.c:2169
 msgid "group permissions added"
 msgstr "Gruppenberechtigungen hinzugefügt"
 
@@ -3105,15 +3307,20 @@ msgid "help screen not readable"
 msgstr "Hilfe nicht lesbar"
 
 #. xgettext: This is the description of the KEY_HOME command.
-#: Programs/cmds.auto.h:1591
+#: Programs/cmds.auto.h:1623
 msgid "home key"
 msgstr "Pos1-Taste"
 
-#: Programs/config.c:570
+#: Programs/brltty-hid.c:81 Programs/brltty-hid.c:88 Programs/brltty-hid.c:172
+#: Programs/brltty-hid.c:179
+msgid "identifier"
+msgstr ""
+
+#: Programs/config.c:428
 msgid "identifier,..."
 msgstr "Bezeichnung,..."
 
-#: Drivers/Braille/Baum/braille.c:1148
+#: Drivers/Braille/Baum/braille.c:1149
 msgid "idle timeout"
 msgstr "Inaktivitätszeitüberschreitung"
 
@@ -3132,12 +3339,12 @@ msgstr "Schneller sprechen"
 msgid "increase speaking volume"
 msgstr "Lauter sprechen"
 
-#: Programs/core.c:1128
+#: Programs/core.c:1160
 msgid "indent"
 msgstr "Einrückung"
 
 #. xgettext: This is the description of the PASTE_HISTORY command.
-#: Programs/cmds.auto.h:1354
+#: Programs/cmds.auto.h:1361
 msgid "insert clipboard history entry after screen cursor"
 msgstr "Text der Zwischenablagenhistorie nach Bildschirmcursor einfügen"
 
@@ -3153,15 +3360,19 @@ msgid "insert host clipboard text after screen cursor"
 msgstr "Text der Zwischenablage an Bildschirmcursorposition einfügen"
 
 #. xgettext: This is the description of the KEY_INSERT command.
-#: Programs/cmds.auto.h:1607
+#: Programs/cmds.auto.h:1639
 msgid "insert key"
 msgstr "Einfüge-Taste"
 
-#: Programs/program.c:166
+#: Programs/program.c:173
 msgid "install path not absolute"
 msgstr "Installationspfad ist nicht absolut"
 
-#: Programs/options.c:104
+#: Programs/brltty-hid.c:206
+msgid "integer"
+msgstr "Ganzzahl"
+
+#: Programs/cmdline.c:104
 msgid "invalid counter setting"
 msgstr "ungültige Zähler-Einstellung"
 
@@ -3169,24 +3380,19 @@ msgstr "ungültige Zähler-Einstellung"
 msgid "invalid escape sequence"
 msgstr "ungültige Escape-Sequenz"
 
-#: Programs/options.c:113
+#: Programs/cmdline.c:113
 msgid "invalid flag setting"
 msgstr "ungültige Schalter-Einstellung"
 
-#: Programs/config.c:2863
+#: Programs/config.c:2980
 msgid "invalid message hold timeout"
 msgstr "ungültige Meldungsanzeigedauer"
 
-#. the operand for an option is invalid
-#: Programs/options.c:594
+#: Programs/cmdline.c:667
 #, fuzzy
 msgid "invalid operand"
 msgstr "fehlender Operand"
 
-#: Programs/brlapi_server.c:4516
-msgid "invalid thread stack size"
-msgstr "ungültige Threadstapelgröße"
-
 #: Drivers/Braille/BrailleLite/braille.c:590
 #: Drivers/Braille/BrailleLite/braille.c:668
 msgid "keyboard emu off"
@@ -3197,67 +3403,82 @@ msgid "keyboard emu on"
 msgstr "Tastaturemulation ein"
 
 #. L  B
-#: Programs/cmd_utils.c:153
+#: Programs/cmd_utils.c:169
 msgid "light blue"
 msgstr "Hellblau"
 
 #. L GB
-#: Programs/cmd_utils.c:155
+#: Programs/cmd_utils.c:171
 msgid "light cyan"
 msgstr "Hellzyan"
 
 #. L G
-#: Programs/cmd_utils.c:154
+#: Programs/cmd_utils.c:170
 msgid "light green"
 msgstr "Hellgrün"
 
 #. RGB
-#: Programs/cmd_utils.c:151
+#: Programs/cmd_utils.c:167
 msgid "light grey"
 msgstr "Hellgrau"
 
 #. LR B
-#: Programs/cmd_utils.c:157
+#: Programs/cmd_utils.c:173
 msgid "light magenta"
 msgstr "Hellmagenta"
 
 #. LR
-#: Programs/cmd_utils.c:156
+#: Programs/cmd_utils.c:172
 msgid "light red"
 msgstr "Hellrot"
 
-#: Programs/cmd_speech.c:500
+#: Programs/cmd_speech.c:514
 msgid "line"
 msgstr "Zeile"
 
 #. xgettext: This is the description of the COPY_LINE command.
-#: Programs/cmds.auto.h:1239
+#: Programs/cmds.auto.h:1246
 msgid "linear copy to character"
 msgstr "kopiere ohne Zeilenumbrüche bis Zeichen"
 
-#: Programs/config.c:750
+#: Programs/brltty-pty.c:112
+msgid "log escape sequences and special characters received from the pty slave"
+msgstr ""
+
+#: Programs/brltty-pty.c:100
+msgid "log input written to the pty slave"
+msgstr ""
+
+#: Programs/brltty-pty.c:106
+msgid "log output received from the pty slave that isn't an escape sequence or a special character"
+msgstr ""
+
+#: Programs/brltty-pty.c:118
+msgid "log unexpected input/output"
+msgstr ""
+
+#: Programs/config.c:615
 msgid "lvl|cat,..."
 msgstr "lvl|kat,..."
 
 #. R B
-#: Programs/cmd_utils.c:149
+#: Programs/cmd_utils.c:165
 msgid "magenta"
 msgstr "Magenta"
 
-#. the operand for a string option hasn't been specified
-#: Programs/options.c:588
+#: Programs/cmdline.c:662
 msgid "missing operand"
 msgstr "fehlender Operand"
 
-#: Programs/parse.c:472
+#: Programs/parse.c:533
 msgid "missing parameter name"
 msgstr "fehlender Parametername"
 
-#: Programs/parse.c:458
+#: Programs/parse.c:519
 msgid "missing parameter qualifier"
 msgstr "fehlende Parameterkennzeichnung"
 
-#: Programs/parse.c:434
+#: Programs/parse.c:495
 msgid "missing parameter value"
 msgstr "fehlender Parameterwert"
 
@@ -3285,17 +3506,21 @@ msgstr "gehe zum vorherigen Element des Bildschirmbereiches"
 msgid "name"
 msgstr "Name"
 
-#: Programs/config.c:433 Programs/config.c:485 Programs/config.c:538
-#: Programs/config.c:560 Programs/config.c:638 Programs/config.c:657
-#: Programs/config.c:700
+#: Programs/config.c:418 Programs/config.c:488 Programs/config.c:531
+#: Programs/config.c:549 Programs/config.c:582 Programs/config.c:598
+#: Programs/config.c:651
 msgid "name=value,..."
 msgstr "Name=Wert,..."
 
-#: Drivers/Braille/Iris/braille.c:1510
+#: Drivers/Braille/Iris/braille.c:1513
 msgid "native"
 msgstr "eigenes"
 
-#: Programs/config.c:1248
+#: Programs/menu_prefs.c:668
+msgid "no dots"
+msgstr "keine Punkte"
+
+#: Programs/config.c:1286
 msgid "no key bindings"
 msgstr "Keine Tastenbelegungen"
 
@@ -3303,18 +3528,26 @@ msgstr "Keine Tastenbelegungen"
 msgid "no screen"
 msgstr "Kein Bildschirm"
 
-#: Programs/config.c:116
-msgid "none"
-msgstr "keine"
+#: Drivers/Screen/TerminalEmulator/em_screen.c:137
+msgid "no screen cache"
+msgstr ""
+
+#: Drivers/Screen/TerminalEmulator/em_screen.c:398
+msgid "no screen emulator"
+msgstr ""
 
-#: Programs/config.c:1537
+#: Programs/cmd_preferences.c:47
 msgid "not saved"
 msgstr "nicht gespeichert"
 
-#: Programs/pgmprivs_linux.c:2018
+#: Programs/pgmprivs_linux.c:2020
 msgid "not switching to an unprivileged user"
 msgstr ""
 
+#: Programs/brltty-hid.c:116
+msgid "octets"
+msgstr ""
+
 #. xgettext: This is the description of the GUI_APP_ALERTS command.
 #: Programs/cmds.auto.h:1112
 msgid "open the application alerts window"
@@ -3346,64 +3579,56 @@ msgstr ""
 msgid "open the device settings window"
 msgstr ""
 
-#: Programs/options.c:202
+#: Programs/cmdline.c:246
 msgid "option"
 msgstr "Option"
 
-#: Programs/pgmprivs_linux.c:2152
+#: Programs/pgmprivs_linux.c:2154
 msgid "ownership claimed"
-msgstr ""
+msgstr "Besitz beansprucht"
 
 #. xgettext: This is the description of the KEY_PAGE_DOWN command.
-#: Programs/cmds.auto.h:1583
+#: Programs/cmds.auto.h:1615
 msgid "page-down key"
 msgstr "Seite-Runter Taste"
 
 #. xgettext: This is the description of the KEY_PAGE_UP command.
-#: Programs/cmds.auto.h:1575
+#: Programs/cmds.auto.h:1607
 msgid "page-up key"
 msgstr "Seite-Rauf Taste"
 
 #: Programs/msgtest.c:42
 msgid "path"
-msgstr ""
+msgstr "Pfad"
 
-#: Programs/config.c:2836
+#: Programs/config.c:2953
 msgid "pid file not specified"
 msgstr "PID-Datei nicht spezifiziert"
 
-#: Programs/program.c:308
+#: Programs/program.c:335
 msgid "pid file open error"
 msgstr "Fehler beim öffnen der PID-Datei"
 
-#: Programs/spk.c:232
-msgid "pitch"
-msgstr "Tonhöhe"
-
 #. xgettext: This is the description of the SETLEFT command.
-#: Programs/cmds.auto.h:1283
+#: Programs/cmds.auto.h:1290
 msgid "place left end of braille window at character"
 msgstr "Positioniere linken Rand der Braillezeile bei Zeichen"
 
-#: Drivers/Braille/Baum/braille.c:1147
+#: Drivers/Braille/Baum/braille.c:1148
 msgid "power switch"
 msgstr "Ein-/Aus-Schalter"
 
-#: Programs/config.c:680
+#: Programs/config.c:511
 msgid "quality"
-msgstr ""
-
-#: Programs/spk.c:206
-msgid "rate"
-msgstr "Geschwindigkeit"
+msgstr "Qualität"
 
 #. xgettext: This is the description of the COPY_RECT command.
-#: Programs/cmds.auto.h:1231
+#: Programs/cmds.auto.h:1238
 msgid "rectangular copy to character"
 msgstr "kopiere mit Zeilenumbrüchen bis Zeichen"
 
 #. R
-#: Programs/cmd_utils.c:148
+#: Programs/cmd_utils.c:164
 msgid "red"
 msgstr "Rot"
 
@@ -3414,39 +3639,39 @@ msgid "refresh braille display"
 msgstr "Pfad zur Schnittstelle für den Zugriff auf die Braillezeile."
 
 #. xgettext: This is the description of the REFRESH_LINE command.
-#: Programs/cmds.auto.h:1413
+#: Programs/cmds.auto.h:1420
 #, fuzzy
 msgid "refresh braille line"
 msgstr "Brailletreiber neu starten"
 
-#: Programs/config.c:492
+#: Programs/config.c:681
 msgid "regexp,..."
 msgstr "regexp,..."
 
-#: Programs/config.c:2081
+#: Programs/config.c:2207
 #, c-format
 msgid "reinitializing braille driver"
 msgstr "reinitialisiere Brailletreiber"
 
-#: Programs/config.c:2594
+#: Programs/config.c:2725
 #, c-format
 msgid "reinitializing screen driver"
 msgstr "reinitialisiere Bildschirmtreiber"
 
-#: Programs/config.c:2394
+#: Programs/config.c:2522
 #, c-format
 msgid "reinitializing speech driver"
 msgstr "reinitialisiere Sprachausgabentreiber"
 
 #. xgettext: This is the description of the SETMARK command.
-#: Programs/cmds.auto.h:1291
+#: Programs/cmds.auto.h:1298
 msgid "remember current braille window position"
 msgstr "Speichere aktuelle Braillezeilenposition"
 
 #. xgettext: This is the description of the ALERT command.
-#: Programs/cmds.auto.h:1445
+#: Programs/cmds.auto.h:1461
 msgid "render an alert"
-msgstr ""
+msgstr "Gib eine Warnung aus"
 
 #: Drivers/Braille/BrailleLite/braille.c:601
 #: Drivers/Braille/BrailleLite/braille.c:780
@@ -3455,6 +3680,11 @@ msgstr ""
 msgid "repeat count"
 msgstr "Wiederholungsanzahl"
 
+#. xgettext: This is the description of the PREFRESET command.
+#: Programs/cmds.auto.h:1205
+msgid "reset preferences to defaults"
+msgstr "Einstellungen auf Standard zurücksetzen"
+
 #. xgettext: This is the description of the RESTARTBRL command.
 #: Programs/cmds.auto.h:607
 msgid "restart braille driver"
@@ -3481,6 +3711,11 @@ msgstr "gespeicherte Einstellungen wiederherstellen"
 msgid "return to the active screen area"
 msgstr "Bildschirmtreiber starten"
 
+#. xgettext: This is the description of the HOSTCMD command.
+#: Programs/cmds.auto.h:1535
+msgid "run host command"
+msgstr ""
+
 #. xgettext: This is the description of the CLIP_SAVE command.
 #: Programs/cmds.auto.h:857
 msgid "save clipboard to disk"
@@ -3491,15 +3726,15 @@ msgstr "Speichert den Inhalt der Zwischenablage auf die Festplatte"
 msgid "save preferences to disk"
 msgstr "Einstellungen speichern"
 
-#: Programs/xbrlapi.c:91
+#: Programs/xbrlapi.c:103
 msgid "scheme+..."
-msgstr ""
+msgstr "Schema+..."
 
-#: Programs/config.c:2470
+#: Programs/config.c:2601
 msgid "screen driver not loadable"
 msgstr "Bildschirmtreiber kann nicht geladen werden"
 
-#: Programs/config.c:2591
+#: Programs/config.c:2722
 msgid "screen driver restarting"
 msgstr "Bildschirmtreiber wird neu gestartet"
 
@@ -3511,7 +3746,19 @@ msgstr "Bildschirmtreiber gestoppt"
 msgid "screen locked"
 msgstr "Bildschirm gesperrt"
 
-#: Drivers/Screen/Linux/screen.c:1531
+#: Drivers/Screen/TerminalEmulator/em_screen.c:141
+msgid "screen not accessible"
+msgstr "Bildschirm nicht erreichbar"
+
+#: Drivers/Screen/TerminalEmulator/em_screen.c:395
+msgid "screen not attached"
+msgstr "Bildschirm nicht angeschlossen"
+
+#: Drivers/Screen/TerminalEmulator/em_screen.c:384
+msgid "screen not available"
+msgstr "Bildschirm nicht verfügbar"
+
+#: Drivers/Screen/Linux/screen.c:1585
 msgid "screen not in text mode"
 msgstr "Bildschirm nicht im Textmodus"
 
@@ -3560,7 +3807,7 @@ msgid "set attribute underlining on/off"
 msgstr "schalte unterstrichene Attribute ein/aus"
 
 #. xgettext: This is the description of the SET_ATTRIBUTES_TABLE command.
-#: Programs/cmds.auto.h:1370
+#: Programs/cmds.auto.h:1377
 msgid "set attributes table"
 msgstr "Setze Attributtabelle"
 
@@ -3630,7 +3877,7 @@ msgid "set contracted/computer braille"
 msgstr ""
 
 #. xgettext: This is the description of the SET_CONTRACTION_TABLE command.
-#: Programs/cmds.auto.h:1378
+#: Programs/cmds.auto.h:1385
 msgid "set contraction table"
 msgstr "Setze Kurzschrifttabelle"
 
@@ -3645,12 +3892,12 @@ msgid "set hidden screen cursor on/off"
 msgstr "Schalte versteckten Bildschirmcursor ein/aus"
 
 #. xgettext: This is the description of the SET_KEYBOARD_TABLE command.
-#: Programs/cmds.auto.h:1386
+#: Programs/cmds.auto.h:1393
 msgid "set keyboard table"
 msgstr "Setze Tastaturtabelle"
 
 #. xgettext: This is the description of the SET_LANGUAGE_PROFILE command.
-#: Programs/cmds.auto.h:1394
+#: Programs/cmds.auto.h:1401
 msgid "set language profile"
 msgstr "Setze Sprachprofil"
 
@@ -3677,7 +3924,7 @@ msgstr "Standbild ein-/ausschalten"
 #. xgettext: This is the description of the COMPBRL6 command.
 #: Programs/cmds.auto.h:1198
 msgid "set six/eight dot computer braille"
-msgstr ""
+msgstr "Sechs/Acht Punkte Computer Braille"
 
 #. xgettext: This is the description of the SKPBLNKWINS command.
 #: Programs/cmds.auto.h:327
@@ -3700,7 +3947,7 @@ msgid "set speech cursor visibility on/off"
 msgstr "Schalte die Sichtbarkeit des Sprachcursors ein/aus"
 
 #. xgettext: This is the description of the TXTSEL_SET command.
-#: Programs/cmds.auto.h:1429
+#: Programs/cmds.auto.h:1436
 #, fuzzy
 msgid "set text selection"
 msgstr "Setze Texttabelle"
@@ -3711,7 +3958,7 @@ msgid "set text style 6-dot/8-dot"
 msgstr "wechsle zwischen 6-Punkt und 8-Punkt Braille"
 
 #. xgettext: This is the description of the SET_TEXT_TABLE command.
-#: Programs/cmds.auto.h:1362
+#: Programs/cmds.auto.h:1369
 msgid "set text table"
 msgstr "Setze Texttabelle"
 
@@ -3730,6 +3977,10 @@ msgstr "Schalte die Verfolgung des Bildschirmcursors ein/aus"
 msgid "show current date and time"
 msgstr "Aktuelles Datum und Uhrzeit anzeigen"
 
+#: Programs/brltty-pty.c:66
+msgid "show the absolute path to the pty slave"
+msgstr ""
+
 #. xgettext: This is the description of the GUI_TITLE command.
 #: Programs/cmds.auto.h:1054
 msgid "show the window title"
@@ -3740,15 +3991,15 @@ msgstr "zeige den Fenstertitel"
 msgid "show various device status indicators"
 msgstr ""
 
-#: Programs/menu_prefs.c:1057
+#: Programs/menu_prefs.c:1059
 msgid "soundcard digital audio"
 msgstr "Digital Audio Soundkarte"
 
-#: Programs/menu_prefs.c:1059
+#: Programs/menu_prefs.c:1061
 msgid "soundcard synthesizer"
 msgstr "Synthesizer der Soundkarte"
 
-#: Programs/cmd.c:277 Programs/core.c:1051
+#: Programs/cmd.c:278 Programs/core.c:1066
 msgid "space"
 msgstr "leer"
 
@@ -3797,11 +4048,11 @@ msgstr "Sprich Sprachcursorposition"
 msgid "specifier"
 msgstr ""
 
-#: Programs/config.c:2242
+#: Programs/config.c:2370
 msgid "speech driver not loadable"
 msgstr "Sprachausgabentreiber kann nicht geladen werden"
 
-#: Programs/config.c:2391
+#: Programs/config.c:2519
 msgid "speech driver restarting"
 msgstr "Bildschirmtreiber wird neu gestartet"
 
@@ -3814,13 +4065,21 @@ msgstr "Bildschirmtreiber gestoppt"
 msgid "spell current word"
 msgstr "buchstabiere aktuelles Wort"
 
+#: Programs/brltty-pty.c:403
+msgid "standard input isn't a terminal"
+msgstr "Standard-Eingabe ist kein Terminal"
+
+#: Programs/brltty-pty.c:408
+msgid "standard output isn't a terminal"
+msgstr "Standardausgabe ist kein Terminal"
+
 #. xgettext: This is the description of the CLIP_NEW command.
-#: Programs/cmds.auto.h:1215
+#: Programs/cmds.auto.h:1222
 msgid "start new clipboard at character"
 msgstr "beginne neue Auswahl bei Zeichen"
 
 #. xgettext: This is the description of the TXTSEL_START command.
-#: Programs/cmds.auto.h:1421
+#: Programs/cmds.auto.h:1428
 #, fuzzy
 msgid "start text selection"
 msgstr "Sprachausgabentreiber starten"
@@ -3860,21 +4119,22 @@ msgstr "Bildschirmtreiber stoppen"
 msgid "stop the speech driver"
 msgstr "Sprachausgabentreiber stoppen"
 
-#: Programs/xbrlapi.c:656
+#: Programs/xbrlapi.c:804
 msgid "strange old error handler\n"
 msgstr "befremdlicher alter Fehlerbehandler\n"
 
-#: Programs/brltty-cldr.c:39
+#: Programs/brltty-cldr.c:39 Programs/brltty-hid.c:95 Programs/brltty-hid.c:102
+#: Programs/brltty-hid.c:109 Programs/brltty-hid.c:123
 msgid "string"
 msgstr "Zeichenkette"
 
 #. xgettext: This is the description of the CONTEXT command.
-#: Programs/cmds.auto.h:1495
+#: Programs/cmds.auto.h:1511
 msgid "switch to command context"
 msgstr "wechsle in den Kommandokontext"
 
 #. xgettext: This is the description of the SWITCHVT command.
-#: Programs/cmds.auto.h:1247
+#: Programs/cmds.auto.h:1254
 msgid "switch to specific virtual terminal"
 msgstr "Wechsle zu einem spezifischen virtuellen Terminal"
 
@@ -3900,19 +4160,27 @@ msgstr "Wechsle zum vorherigen virtuellen Terminal"
 msgid "switch to the previous virtual terminal"
 msgstr "Wechsle zum vorherigen virtuellen Terminal"
 
-#: Programs/pgmprivs_linux.c:1994
+#: Programs/pgmprivs_linux.c:1996
 msgid "switched to unprivileged user"
-msgstr ""
+msgstr "gewechselt zum nicht privilegierten Benutzer"
 
 #. xgettext: This is the description of the KEY_TAB command.
-#: Programs/cmds.auto.h:1519
+#: Programs/cmds.auto.h:1551
 msgid "tab key"
 msgstr "Tabulator-Taste"
 
-#: Programs/config.c:379 Programs/config.c:386
+#: Programs/config.c:667 Programs/config.c:674
 msgid "text"
 msgstr "Text"
 
+#: Programs/brltty-pty.c:87
+msgid "the directory to change to"
+msgstr ""
+
+#: Programs/brltty-pty.c:94
+msgid "the home directory to use"
+msgstr ""
+
 #: Programs/msgtest.c:45
 msgid "the locale directory containing the translations"
 msgstr ""
@@ -3925,59 +4193,62 @@ msgstr ""
 msgid "the name of the domain containing the translations"
 msgstr ""
 
+#: Programs/brltty-pty.c:80
+msgid "the name or number of the group to run as"
+msgstr ""
+
+#: Programs/brltty-pty.c:73
+msgid "the name or number of the user to run as"
+msgstr ""
+
 #. xgettext: This is the description of the PASSDOTS command.
-#: Programs/cmds.auto.h:1463
+#: Programs/cmds.auto.h:1479
 msgid "type braille dots"
 msgstr "Braillezeichen eingeben"
 
 #. xgettext: This is the description of the PASSCHAR command.
-#: Programs/cmds.auto.h:1454
+#: Programs/cmds.auto.h:1470
 msgid "type unicode character"
 msgstr "Unicode-Zeichen eingeben"
 
-#: Programs/xbrlapi.c:974
+#: Programs/xbrlapi.c:1153
 msgid "unexpected block type"
 msgstr "unerwarteter Blocktyp"
 
-#: Programs/xbrlapi.c:864
+#: Programs/xbrlapi.c:1043
 msgid "unexpected cmd"
 msgstr "unerwartetes Kommando"
 
-#: Programs/cmd_queue.c:157
+#: Programs/cmd_queue.c:158
 msgid "unhandled command"
 msgstr "nicht erkanntes Kommando"
 
-#: Programs/cmd.c:198
+#: Programs/cmd.c:199
 msgid "unknown command"
 msgstr "unbekanntes Kommando"
 
-#: Programs/options.c:828
+#: Programs/cmdline.c:960
 msgid "unknown configuration directive"
 msgstr "unbekannte Konfigurationsdirektive"
 
-#: Programs/config.c:791
+#: Programs/config.c:806
 msgid "unknown log level or category"
 msgstr "unbekannte Protokollierungsausführlichkeit oder Kategorie"
 
-#. an unknown option has been specified
-#: Programs/options.c:575
+#: Programs/cmdline.c:657
 msgid "unknown option"
 msgstr "unbekannte Option"
 
-#: Programs/config.c:327
+#: Programs/config.c:332
 msgid "unknown screen content quality"
 msgstr ""
 
-#: Programs/parse.c:501
+#: Programs/parse.c:562
 msgid "unsupported parameter"
 msgstr "nicht unterstützter Parameter"
 
-#: Programs/spk.c:180
-msgid "volume"
-msgstr "Lautstärke"
-
 #. LRGB
-#: Programs/cmd_utils.c:159
+#: Programs/cmd_utils.c:175
 msgid "white"
 msgstr "Weiß"
 
@@ -3986,98 +4257,113 @@ msgstr "Weiß"
 msgid "working directory changed"
 msgstr "Arbeitsverzeichnis"
 
+#: Programs/brltty-pty.c:60
+msgid "write driver directives to standard error"
+msgstr ""
+
 #: Programs/msgtest.c:65
 msgid "write the translations using UTF-8"
 msgstr ""
 
-#: Programs/xbrlapi.c:911
+#: Programs/xbrlapi.c:1090
 #, c-format
 msgid "xbrlapi: Couldn't find a keycode to remap for simulating unbound keysym %08X\n"
 msgstr ""
 
-#: Programs/xbrlapi.c:898
+#: Programs/xbrlapi.c:1077
 #, c-format
 msgid "xbrlapi: Couldn't find modifiers to apply to %d for getting keysym %08X\n"
 msgstr ""
 
-#: Programs/xbrlapi.c:874
+#: Programs/xbrlapi.c:1053
 #, c-format
 msgid "xbrlapi: Couldn't translate keysym %08X to keycode.\n"
 msgstr ""
 
-#: Programs/xbrlapi.c:415
+#: Programs/xbrlapi.c:604
 #, c-format
 msgid "xbrlapi: X Error %d, %s on display %s\n"
 msgstr ""
 
-#: Programs/xbrlapi.c:457
+#: Programs/xbrlapi.c:646
 #, c-format
 msgid "xbrlapi: bad format for VT number\n"
 msgstr "xbrlapi: ungültiges Format für VT Nummer\n"
 
-#: Programs/xbrlapi.c:460
+#: Programs/xbrlapi.c:649
 #, c-format
 msgid "xbrlapi: bad type for VT number\n"
 msgstr "xbrlapi: ungültiger Typ für VT Nummer\n"
 
-#: Programs/xbrlapi.c:439
+#: Programs/xbrlapi.c:628
 #, c-format
 msgid "xbrlapi: cannot get root window XFree86_VT property\n"
 msgstr ""
 
-#: Programs/xbrlapi.c:316
+#: Programs/xbrlapi.c:342
 #, c-format
 msgid "xbrlapi: cannot write window name %s\n"
 msgstr ""
 
-#: Programs/xbrlapi.c:764
+#: Programs/xbrlapi.c:916
 #, c-format
 msgid "xbrlapi: didn't grab parent of %#010lx\n"
 msgstr ""
 
-#: Programs/xbrlapi.c:782
+#: Programs/xbrlapi.c:937 Programs/xbrlapi.c:956
 #, c-format
 msgid "xbrlapi: didn't grab window %#010lx\n"
 msgstr ""
 
-#: Programs/xbrlapi.c:582
+#: Programs/xbrlapi.c:720
 #, c-format
 msgid "xbrlapi: didn't grab window %#010lx but got focus\n"
 msgstr ""
 
-#: Programs/xbrlapi.c:448
+#: Programs/xbrlapi.c:637
 #, c-format
 msgid "xbrlapi: more than one item for VT number\n"
 msgstr "xbrlapi: mehr als ein Element für VT Nummer\n"
 
-#: Programs/xbrlapi.c:433
+#: Programs/xbrlapi.c:622
 #, c-format
 msgid "xbrlapi: no XFree86_VT atom\n"
 msgstr ""
 
-#: Programs/xbrlapi.c:444
+#: Programs/xbrlapi.c:633
 #, c-format
 msgid "xbrlapi: no items for VT number\n"
 msgstr "xbrlapi: keine Elemente für VT Nummer\n"
 
-#: Programs/xbrlapi.c:416
+#: Programs/xbrlapi.c:605
 #, c-format
 msgid "xbrlapi: resource %#010lx, req %u:%u\n"
 msgstr ""
 
+#. Server refused our Xkb remapping request, probably the buggy version 21, ignore error
+#: Programs/xbrlapi.c:598
+#, c-format
+msgid "xbrlapi: server refused our mapping request, could not synthesize key\n"
+msgstr ""
+
 #. "shouldn't happen" events
-#: Programs/xbrlapi.c:811
+#: Programs/xbrlapi.c:990
 #, c-format
 msgid "xbrlapi: unhandled event type: %d\n"
 msgstr "xbrlapi: unbehandelter Ereignistyp: %d\n"
 
-#: Programs/xbrlapi.c:790
+#: Programs/xbrlapi.c:965
+#, c-format
+msgid "xbrlapi: window %#010lx changed to NULL command\n"
+msgstr ""
+
+#: Programs/xbrlapi.c:949
 #, c-format
 msgid "xbrlapi: window %#010lx changed to NULL name\n"
 msgstr ""
 
 #. LRG
-#: Programs/cmd_utils.c:158
+#: Programs/cmd_utils.c:174
 msgid "yellow"
 msgstr "Gelb"
 
diff --git a/Messages/fr.po b/Messages/fr.po
index 897f81980..5fefc6695 100644
--- a/Messages/fr.po
+++ b/Messages/fr.po
@@ -1,7 +1,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Messages/it.po b/Messages/it.po
index aa0d9861f..51f5ac962 100644
--- a/Messages/it.po
+++ b/Messages/it.po
@@ -1,7 +1,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Messages/ru.po b/Messages/ru.po
index 0dc7ab3f9..db003e644 100644
--- a/Messages/ru.po
+++ b/Messages/ru.po
@@ -1,7 +1,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Messages/zh.po b/Messages/zh.po
index 86ebac08a..40b28f1db 100644
--- a/Messages/zh.po
+++ b/Messages/zh.po
@@ -1,7 +1,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Programs/Makefile.in b/Programs/Makefile.in
index cf7e569b7..6454e3585 100644
--- a/Programs/Makefile.in
+++ b/Programs/Makefile.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -1166,8 +1166,8 @@ install-commands: all-commands install-program-directories $(INSTALL_BRLTTY_PTY)
 	$(INSTALL_PROGRAM) brltty-lscmds$X $(INSTALL_PROGRAM_DIRECTORY) 
 	$(INSTALL_PROGRAM) brltty-hid$X $(INSTALL_PROGRAM_DIRECTORY) 
 
-install-brltty-pty: install-commands-directory
-	$(INSTALL_PROGRAM) brltty-pty$X $(INSTALL_COMMANDS_DIRECTORY) 
+install-brltty-pty: install-helpers-directory
+	$(INSTALL_PROGRAM) brltty-pty$X $(INSTALL_HELPERS_DIRECTORY) 
 
 install-tools: all-tools install-program-directories
 	$(INSTALL_PROGRAM) brltty-cldr$X $(INSTALL_PROGRAM_DIRECTORY) 
@@ -1183,7 +1183,7 @@ install-tools: all-tools install-program-directories
 XBRLAPI_X11_AUTOSTART_FILE = 90xbrlapi
 XBRLAPI_GDM_AUTOSTART_FILE = xbrlapi.desktop
 
-install-xbrlapi: xbrlapi$X install-program-directory install-x11-autostart-directory install-gdm-autostart-directory
+install-xbrlapi: xbrlapi$X install-program-directory install-man1-directory install-x11-autostart-directory install-gdm-autostart-directory
 	$(INSTALL_PROGRAM) xbrlapi$X $(INSTALL_PROGRAM_DIRECTORY) 
 	$(INSTALL_DATA) $(BLD_TOP)$(DOC_DIR)/xbrlapi.1 $(INSTALL_MAN1_DIRECTORY)
 	$(INSTALL_DATA) $(BLD_TOP)Autostart/X11/$(XBRLAPI_X11_AUTOSTART_FILE) $(INSTALL_X11_AUTOSTART_DIRECTORY)
@@ -1280,7 +1280,7 @@ install-api-key:
 	if test ! -f $$file -a -w $(sysconfdir) -a -z "$(INSTALL_ROOT)"; \
 	then $(SRC_TOP)brltty-genkey -f $$file; fi
 
-install-api-commands: all-brltty-clip
+install-api-commands: all-brltty-clip install-program-directory
 	$(INSTALL_PROGRAM) brltty-clip$X $(INSTALL_PROGRAM_DIRECTORY) 
 
 ###############################################################################
@@ -1290,7 +1290,7 @@ uninstall:: uninstall-programs uninstall-tables uninstall-drivers uninstall-mess
 uninstall-programs:
 	-rm -f $(INSTALL_PROGRAM_DIRECTORY)/brltty$X
 	-rm -f $(INSTALL_PROGRAM_DIRECTORY)/brltty-*
-	-rm -f $(INSTALL_COMMANDS_DIRECTORY)/brltty-*
+	-rm -f $(INSTALL_HELPERS_DIRECTORY)/brltty-*
 	-rm -f $(INSTALL_PROGRAM_DIRECTORY)/xbrlapi$X
 	-rm -f $(INSTALL_X11_AUTOSTART_DIRECTORY)/$(XBRLAPI_X11_AUTOSTART_FILE)
 	-rm -f $(INSTALL_GDM_AUTOSTART_DIRECTORY)/$(XBRLAPI_GDM_AUTOSTART_FILE)
diff --git a/Programs/activity.c b/Programs/activity.c
index 6ef0ac967..4bb9b0b3b 100644
--- a/Programs/activity.c
+++ b/Programs/activity.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/activity.h b/Programs/activity.h
index 13dd8bf1e..748f1b1dd 100644
--- a/Programs/activity.h
+++ b/Programs/activity.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/addresses.c b/Programs/addresses.c
index ff58932d7..ede17807d 100644
--- a/Programs/addresses.c
+++ b/Programs/addresses.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/alert.c b/Programs/alert.c
index a47c2dc13..8825afda8 100644
--- a/Programs/alert.c
+++ b/Programs/alert.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/api.h b/Programs/api.h
index 7b3a7d152..86b3f7764 100644
--- a/Programs/api.h
+++ b/Programs/api.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/api_control.c b/Programs/api_control.c
index b35c2e388..2572325c3 100644
--- a/Programs/api_control.c
+++ b/Programs/api_control.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/api_control.h b/Programs/api_control.h
index 4509e61cd..66c116703 100644
--- a/Programs/api_control.h
+++ b/Programs/api_control.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/api_server.h b/Programs/api_server.h
index 45df4351d..811266ed3 100644
--- a/Programs/api_server.h
+++ b/Programs/api_server.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/apitest.c b/Programs/apitest.c
index 1f64d9134..d58236315 100644
--- a/Programs/apitest.c
+++ b/Programs/apitest.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/async_alarm.c b/Programs/async_alarm.c
index 5bbd2825f..f6bd1e765 100644
--- a/Programs/async_alarm.c
+++ b/Programs/async_alarm.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/async_data.c b/Programs/async_data.c
index 35148490a..22c0ef6b3 100644
--- a/Programs/async_data.c
+++ b/Programs/async_data.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/async_event.c b/Programs/async_event.c
index ce7ed3d0d..2ae08bd15 100644
--- a/Programs/async_event.c
+++ b/Programs/async_event.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/async_handle.c b/Programs/async_handle.c
index ee4d7f51a..4e20627df 100644
--- a/Programs/async_handle.c
+++ b/Programs/async_handle.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/async_internal.h b/Programs/async_internal.h
index 20b287790..2f6a8eca8 100644
--- a/Programs/async_internal.h
+++ b/Programs/async_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/async_io.c b/Programs/async_io.c
index cb0d712d7..974fb45e6 100644
--- a/Programs/async_io.c
+++ b/Programs/async_io.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/async_signal.c b/Programs/async_signal.c
index 02a34d0d5..cc8239417 100644
--- a/Programs/async_signal.c
+++ b/Programs/async_signal.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/async_task.c b/Programs/async_task.c
index 710680a00..c18e955b5 100644
--- a/Programs/async_task.c
+++ b/Programs/async_task.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/async_wait.c b/Programs/async_wait.c
index f90d9cb4d..f4a266c0a 100644
--- a/Programs/async_wait.c
+++ b/Programs/async_wait.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/atb_compile.c b/Programs/atb_compile.c
index 12a242e9d..5a0c8117f 100644
--- a/Programs/atb_compile.c
+++ b/Programs/atb_compile.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/atb_internal.h b/Programs/atb_internal.h
index a2b4680c4..39e0470ad 100644
--- a/Programs/atb_internal.h
+++ b/Programs/atb_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/atb_translate.c b/Programs/atb_translate.c
index 0444d3108..78143cb92 100644
--- a/Programs/atb_translate.c
+++ b/Programs/atb_translate.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/auth.c b/Programs/auth.c
index 2982bff36..8a00dd465 100644
--- a/Programs/auth.c
+++ b/Programs/auth.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/beep.c b/Programs/beep.c
index bdaf6704e..1a814600a 100644
--- a/Programs/beep.c
+++ b/Programs/beep.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/beep_linux.c b/Programs/beep_linux.c
index 510c7e8d4..075459ef4 100644
--- a/Programs/beep_linux.c
+++ b/Programs/beep_linux.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/beep_msdos.c b/Programs/beep_msdos.c
index 5d06404d5..b882bf0f0 100644
--- a/Programs/beep_msdos.c
+++ b/Programs/beep_msdos.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/beep_none.c b/Programs/beep_none.c
index 80b777fd2..5ecb869d9 100644
--- a/Programs/beep_none.c
+++ b/Programs/beep_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/beep_solaris.c b/Programs/beep_solaris.c
index 7c77b9531..eeff2c242 100644
--- a/Programs/beep_solaris.c
+++ b/Programs/beep_solaris.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/beep_spkr.c b/Programs/beep_spkr.c
index cb31f1c9e..0ed11004e 100644
--- a/Programs/beep_spkr.c
+++ b/Programs/beep_spkr.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/beep_windows.c b/Programs/beep_windows.c
index 417b5421b..cc6de0a1c 100644
--- a/Programs/beep_windows.c
+++ b/Programs/beep_windows.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/beep_wskbd.c b/Programs/beep_wskbd.c
index 1e275a9e6..b34886ab2 100644
--- a/Programs/beep_wskbd.c
+++ b/Programs/beep_wskbd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/bell.c b/Programs/bell.c
index 7f6fbcffd..38f5d8f8a 100644
--- a/Programs/bell.c
+++ b/Programs/bell.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/bell_linux.c b/Programs/bell_linux.c
index 00bb637f3..0aed4d192 100644
--- a/Programs/bell_linux.c
+++ b/Programs/bell_linux.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/bell_none.c b/Programs/bell_none.c
index 211486ce3..e4473dbe7 100644
--- a/Programs/bell_none.c
+++ b/Programs/bell_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/blink.c b/Programs/blink.c
index c96f37f98..0d46c5008 100644
--- a/Programs/blink.c
+++ b/Programs/blink.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/blink.h b/Programs/blink.h
index d0a1c03e2..91d781ea4 100644
--- a/Programs/blink.h
+++ b/Programs/blink.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/bluetooth.c b/Programs/bluetooth.c
index 314615ee3..959a8dbc3 100644
--- a/Programs/bluetooth.c
+++ b/Programs/bluetooth.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/bluetooth_android.c b/Programs/bluetooth_android.c
index e106f8ab3..d77c8c31f 100644
--- a/Programs/bluetooth_android.c
+++ b/Programs/bluetooth_android.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/bluetooth_darwin.c b/Programs/bluetooth_darwin.c
index e12ff4853..350b32d22 100644
--- a/Programs/bluetooth_darwin.c
+++ b/Programs/bluetooth_darwin.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/bluetooth_internal.h b/Programs/bluetooth_internal.h
index 02d486864..31ac3dda8 100644
--- a/Programs/bluetooth_internal.h
+++ b/Programs/bluetooth_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/bluetooth_linux.c b/Programs/bluetooth_linux.c
index a30fad61e..c40a8f60f 100644
--- a/Programs/bluetooth_linux.c
+++ b/Programs/bluetooth_linux.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/bluetooth_names.c b/Programs/bluetooth_names.c
index 26f922727..f2fbea865 100644
--- a/Programs/bluetooth_names.c
+++ b/Programs/bluetooth_names.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/bluetooth_none.c b/Programs/bluetooth_none.c
index 0853da993..d0644ada8 100644
--- a/Programs/bluetooth_none.c
+++ b/Programs/bluetooth_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/bluetooth_windows.c b/Programs/bluetooth_windows.c
index d6490d196..99447aaa4 100644
--- a/Programs/bluetooth_windows.c
+++ b/Programs/bluetooth_windows.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brl.c b/Programs/brl.c
index a7693c5e8..3134a1afd 100644
--- a/Programs/brl.c
+++ b/Programs/brl.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brl.h b/Programs/brl.h
index f4c709239..f68be4798 100644
--- a/Programs/brl.h
+++ b/Programs/brl.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brl_base.c b/Programs/brl_base.c
index 832c8921e..c4bf989bb 100644
--- a/Programs/brl_base.c
+++ b/Programs/brl_base.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brl_cmds.awk b/Programs/brl_cmds.awk
index 283ecca3f..2c87f6d63 100644
--- a/Programs/brl_cmds.awk
+++ b/Programs/brl_cmds.awk
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Programs/brl_driver.c b/Programs/brl_driver.c
index dc26f3446..618c2af56 100644
--- a/Programs/brl_driver.c
+++ b/Programs/brl_driver.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brl_input.c b/Programs/brl_input.c
index b12fc2fb9..2e3d46af9 100644
--- a/Programs/brl_input.c
+++ b/Programs/brl_input.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brl_input.h b/Programs/brl_input.h
index 60421a320..c2b7df364 100644
--- a/Programs/brl_input.h
+++ b/Programs/brl_input.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brl_utils.c b/Programs/brl_utils.c
index fb7abd7c2..f25484bbb 100644
--- a/Programs/brl_utils.c
+++ b/Programs/brl_utils.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brlapi.awk b/Programs/brlapi.awk
index 9798595ff..45d83f142 100644
--- a/Programs/brlapi.awk
+++ b/Programs/brlapi.awk
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Programs/brlapi.h.in b/Programs/brlapi.h.in
index c3736f629..32fd6a690 100644
--- a/Programs/brlapi.h.in
+++ b/Programs/brlapi.h.in
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
@@ -17,6 +17,13 @@
  * This software is maintained by Dave Mielke <dave@mielke.cc>.
  */
 
+/** \mainpage BrlAPI API reference manual
+ * This documentation provides all the API details of BrlAPI.
+ *
+ * A general introduction guide is available online on
+ * https://brltty.app/doc/Manual-BrlAPI/English/BrlAPI.html
+ */
+
 /** \file
  * \brief Types, defines and functions prototypes for \e BrlAPI's library
  */
@@ -438,6 +445,11 @@ int BRLAPI_STDCALL brlapi__getDisplaySize(brlapi_handle_t *handle, unsigned int
  * Once brlapi_enterTtyMode() is called, brlapi_leaveTtyMode() has to be called
  * before calling brlapi_enterTtyMode() again.
  *
+ * If the application does not want to take control of a particular tty, but
+ * keep control on all ttys, brlapi_enterTtyModeWithPath should be called
+ * instead with nttys equal to 0. This is usually what a screen reader wants to
+ * use.
+ *
  * TODO: document which functions work in TTY mode only.
  *
  * \sa brlapi_leaveTtyMode() brlapi_readKey()
@@ -1154,7 +1166,12 @@ int BRLAPI_STDCALL brlapi__setParameter(brlapi_handle_t *handle, brlapi_param_t
  * \param len is the size of the data.
  *
  * This callback only gets called when the application calls some brlapi_
- * function (i.e. BrlAPI gets direct control of the execution).
+ * function (i.e. BrlAPI gets direct control of the execution), BrlAPI itself
+ * does not start a separate thread or such.
+ *
+ * If an application wants to see such event trigger a callback getting called
+ * e.g. in another thread, it can use brlapi_pause() to give BrlAPI an
+ * opportunity to receive messages and call the callbacks.
  */
 typedef void (*brlapi_paramCallback_t)(brlapi_param_t parameter, brlapi_param_subparam_t subparam, brlapi_param_flags_t flags, void *priv, const void *data, size_t len);
 
diff --git a/Programs/brlapi_brldefs.awk b/Programs/brlapi_brldefs.awk
index 7f8bc6112..1e98d15c4 100644
--- a/Programs/brlapi_brldefs.awk
+++ b/Programs/brlapi_brldefs.awk
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Programs/brlapi_client.c b/Programs/brlapi_client.c
index 12a7dc62a..4d823cd4c 100644
--- a/Programs/brlapi_client.c
+++ b/Programs/brlapi_client.c
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Programs/brlapi_common.h b/Programs/brlapi_common.h
index 29e0643a5..a12c8c4f6 100644
--- a/Programs/brlapi_common.h
+++ b/Programs/brlapi_common.h
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Programs/brlapi_constants.awk b/Programs/brlapi_constants.awk
index 84177b55e..3bc639865 100644
--- a/Programs/brlapi_constants.awk
+++ b/Programs/brlapi_constants.awk
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Programs/brlapi_keycodes.h b/Programs/brlapi_keycodes.h
index a1daa2eaa..6afa2140f 100644
--- a/Programs/brlapi_keycodes.h
+++ b/Programs/brlapi_keycodes.h
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Programs/brlapi_keyranges.c b/Programs/brlapi_keyranges.c
index 9e3383ce9..d3c5de894 100644
--- a/Programs/brlapi_keyranges.c
+++ b/Programs/brlapi_keyranges.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brlapi_keyranges.h b/Programs/brlapi_keyranges.h
index b91c8bbac..a565b85c6 100644
--- a/Programs/brlapi_keyranges.h
+++ b/Programs/brlapi_keyranges.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brlapi_keytab.awk b/Programs/brlapi_keytab.awk
index 0a25974bc..727dc6828 100644
--- a/Programs/brlapi_keytab.awk
+++ b/Programs/brlapi_keytab.awk
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Programs/brlapi_param.h b/Programs/brlapi_param.h
index 1b0ae92ab..cbdb528d7 100644
--- a/Programs/brlapi_param.h
+++ b/Programs/brlapi_param.h
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Programs/brlapi_protocol.h b/Programs/brlapi_protocol.h
index 876f3f98a..b2c4283da 100644
--- a/Programs/brlapi_protocol.h
+++ b/Programs/brlapi_protocol.h
@@ -1,7 +1,7 @@
 /*
  * libbrlapi - A library providing access to braille terminals for applications.
  *
- * Copyright (C) 2002-2024 by
+ * Copyright (C) 2002-2025 by
  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
  *
diff --git a/Programs/brlapi_server.c b/Programs/brlapi_server.c
index 717daa7df..f8d57010b 100644
--- a/Programs/brlapi_server.c
+++ b/Programs/brlapi_server.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -24,7 +24,7 @@
 #define UNAUTH_TIMEOUT 30
 
 #define RELEASE "BrlAPI Server: release " BRLAPI_RELEASE
-#define COPYRIGHT "   Copyright (C) 2002-2024 by Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>, \
+#define COPYRIGHT "   Copyright (C) 2002-2025 by Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>, \
 Samuel Thibault <samuel.thibault@ens-lyon.org>"
 
 #include "prologue.h"
@@ -78,7 +78,6 @@ Samuel Thibault <samuel.thibault@ens-lyon.org>"
 #include "embed.h"
 #include "clipboard.h"
 #include "ttb.h"
-#include "core.h"
 #include "api_server.h"
 #include "report.h"
 #include "log.h"
@@ -95,6 +94,8 @@ Samuel Thibault <samuel.thibault@ens-lyon.org>"
 #include "async_signal.h"
 #include "thread.h"
 #include "blink.h"
+#include "options.h"
+#include "core.h"
 
 #ifdef __MINGW32__
 #define LogSocketError(msg) logWindowsSocketError(msg)
@@ -182,6 +183,7 @@ extern char *opt_brailleParameters;
 extern char *cfg_brailleParameters;
 
 typedef struct {
+  unsigned int size;
   unsigned int cursor;
   wchar_t *text;
   unsigned char *andAttr;
@@ -425,7 +427,7 @@ static int resumeBrailleDriver(BrailleDisplay *brl) {
 }
 
 typedef struct {
-  unsigned resumed:1;
+  unsigned char resumed:1;
 } CoreTaskData_resumeBrailleDriver;
 
 CORE_TASK_CALLBACK(apiCoreTask_resumeBrailleDriver) {
@@ -486,7 +488,7 @@ static int flushBrailleOutput(BrailleDisplay *brl) {
 }
 
 typedef struct {
-  unsigned flushed:1;
+  unsigned char flushed:1;
 } CoreTaskData_flushBrailleOutput;
 
 CORE_TASK_CALLBACK(apiCoreTask_flushBrailleOutput) {
@@ -579,13 +581,15 @@ typedef struct { /* packet handlers */
 /* Returns to report success, -1 on errors */
 static int allocBrailleWindow(BrailleWindow *brailleWindow)
 {
-  if (!(brailleWindow->text = malloc(displaySize*sizeof(wchar_t)))) goto out;
-  if (!(brailleWindow->andAttr = malloc(displaySize))) goto outText;
-  if (!(brailleWindow->orAttr = malloc(displaySize))) goto outAnd;
-
-  wmemset(brailleWindow->text, WC_C(' '), displaySize);
-  memset(brailleWindow->andAttr, 0xFF, displaySize);
-  memset(brailleWindow->orAttr, 0x00, displaySize);
+  unsigned int size = displaySize;
+  brailleWindow->size = size;
+  if (!(brailleWindow->text = malloc(size*sizeof(wchar_t)))) goto out;
+  if (!(brailleWindow->andAttr = malloc(size))) goto outText;
+  if (!(brailleWindow->orAttr = malloc(size))) goto outAnd;
+
+  wmemset(brailleWindow->text, WC_C(' '), size);
+  memset(brailleWindow->andAttr, 0xFF, size);
+  memset(brailleWindow->orAttr, 0x00, size);
   brailleWindow->cursor = 0;
   return 0;
 
@@ -599,6 +603,43 @@ out:
   return -1;
 }
 
+/* Function : reAllocBrailleWindow */
+/* Resizes the members of a BrailleWindow structure according to a new size */
+/* Returns to report success, -1 on errors */
+static int reallocBrailleWindow(BrailleWindow *brailleWindow, unsigned size)
+{
+  wchar_t *newText;
+  unsigned char *newAndAttr;
+  unsigned char *newOrAttr;
+  unsigned int oldsize = brailleWindow->size;
+
+  if (!(newText = realloc(brailleWindow->text, size*sizeof(wchar_t)))) goto out;
+  if (!(newAndAttr = realloc(brailleWindow->andAttr, size))) goto outText;
+  if (!(newOrAttr = realloc(brailleWindow->orAttr, size))) goto outAnd;
+
+  brailleWindow->size = size;
+  brailleWindow->text = newText;
+  brailleWindow->andAttr = newAndAttr;
+  brailleWindow->orAttr = newOrAttr;
+
+  if (size > oldsize) {
+    wmemset(newText + oldsize, WC_C(' '), size - oldsize);
+    memset(newAndAttr + oldsize, 0xFF, size - oldsize);
+    memset(newOrAttr + oldsize, 0x00, size - oldsize);
+  }
+
+  return 0;
+
+outAnd:
+  free(newAndAttr);
+
+outText:
+  free(newText);
+
+out:
+  return -1;
+}
+
 /* Function: freeBrailleWindow */
 /* Frees the fields of a BrailleWindow structure */
 static void freeBrailleWindow(BrailleWindow *brailleWindow)
@@ -629,16 +670,35 @@ static void getDots(const BrailleWindow *brailleWindow, unsigned char *buf)
 {
   int i;
   unsigned char c;
-  for (i=0; i<displaySize; i++) {
+  unsigned int size = MIN(brailleWindow->size, displaySize);
+  for (i=0; i<size; i++) {
     c = convertCharacterToDots(textTable, brailleWindow->text[i]);
     buf[i] = (c & brailleWindow->andAttr[i]) | brailleWindow->orAttr[i];
   }
+  for (i=size; i<displaySize; i++) {
+    buf[i] = 0;
+  }
 
-  if (brailleWindow->cursor) {
+  if (brailleWindow->cursor && brailleWindow->cursor < displaySize) {
     buf[brailleWindow->cursor-1] |= cursorOverlay;
   }
 }
 
+/* Function: getText */
+/* Returns the braille text corresponding to a BrailleWindow structure */
+/* No allocation of buf is performed */
+static void getText(const BrailleWindow *brailleWindow, wchar_t *buf)
+{
+  int i;
+  unsigned int size = MIN(brailleWindow->size, displaySize);
+  for (i=0; i<size; i++) {
+    buf[i] = brailleWindow->text[i];
+  }
+  for (i=size; i<displaySize; i++) {
+    buf[i] = WC_C(' ');
+  }
+}
+
 /****************************************************************************/
 /** CONNECTIONS MANAGING                                                   **/
 /****************************************************************************/
@@ -1083,6 +1143,7 @@ static int handleWrite(Connection *c, brlapi_packetType_t type, brlapi_packet_t
   int remaining = size;
   char *charset = NULL;
   unsigned int charsetLen = 0;
+  unsigned int connSize;
   CHECKEXC(remaining>=sizeof(wa->flags), BRLAPI_ERROR_INVALID_PACKET, "packet too small for flags");
   CHECKEXC(!c->raw,BRLAPI_ERROR_ILLEGAL_INSTRUCTION,"not allowed in raw mode");
   CHECKEXC(c->tty,BRLAPI_ERROR_ILLEGAL_INSTRUCTION,"not allowed out of tty mode");
@@ -1093,6 +1154,13 @@ static int handleWrite(Connection *c, brlapi_packetType_t type, brlapi_packet_t
   }
   remaining -= sizeof(wa->flags); /* flags */
   CHECKEXC((wa->flags & BRLAPI_WF_DISPLAYNUMBER)==0, BRLAPI_ERROR_OPNOTSUPP, "display number not yet supported");
+  connSize = c->brailleWindow.size;
+  if (connSize < displaySize) { /* Display got bigger, allocate room for this */
+    connSize = displaySize;
+    lockMutex(&c->brailleWindowMutex);
+    reallocBrailleWindow(&c->brailleWindow, connSize);
+    unlockMutex(&c->brailleWindowMutex);
+  }
   if (wa->flags & BRLAPI_WF_REGION) {
     int regionSize;
     CHECKEXC(remaining>2*sizeof(uint32_t), BRLAPI_ERROR_INVALID_PACKET, "packet too small for region");
@@ -1110,23 +1178,23 @@ static int handleWrite(Connection *c, brlapi_packetType_t type, brlapi_packet_t
     }
 
     CHECKEXC(
-      (rbeg >= 1) && (rbeg <= displaySize),
+      (rbeg >= 1) && (rbeg <= connSize),
       BRLAPI_ERROR_INVALID_PARAMETER, "invalid region start"
     );
 
     CHECKEXC(
-      (rsiz >= 1) && (rsiz <= displaySize),
+      (rsiz >= 1) && (rsiz <= connSize),
       BRLAPI_ERROR_INVALID_PARAMETER, "invalid region size"
     );
 
     CHECKEXC(
-      (rbeg + rsiz - 1 <= displaySize),
+      (rbeg + rsiz - 1 <= connSize),
       BRLAPI_ERROR_INVALID_PARAMETER, "invalid region"
     );
   } else {
     logMessage(LOG_CATEGORY(SERVER_EVENTS), "warning: fd %"PRIfd" uses deprecated regionBegin=0 and regionSize = 0",c->fd);
     rbeg = 1;
-    rsiz = displaySize;
+    rsiz = connSize;
     fill = true;
   }
   if (wa->flags & BRLAPI_WF_TEXT) {
@@ -1153,7 +1221,7 @@ static int handleWrite(Connection *c, brlapi_packetType_t type, brlapi_packet_t
     memcpy(&u32, p, sizeof(uint32_t));
     cursor = ntohl(u32);
     p += sizeof(uint32_t); remaining -= sizeof(uint32_t); /* cursor */
-    CHECKEXC(cursor<=displaySize, BRLAPI_ERROR_INVALID_PACKET, "wrong cursor");
+    CHECKEXC(cursor<=connSize, BRLAPI_ERROR_INVALID_PACKET, "wrong cursor");
   }
   if (wa->flags & BRLAPI_WF_CHARSET) {
     CHECKEXC(wa->flags & BRLAPI_WF_TEXT, BRLAPI_ERROR_INVALID_PACKET, "charset requires text");
@@ -1166,7 +1234,7 @@ static int handleWrite(Connection *c, brlapi_packetType_t type, brlapi_packet_t
   CHECKEXC(remaining==0, BRLAPI_ERROR_INVALID_PACKET, "packet too big");
   /* Here the whole packet has been checked */
 
-  unsigned int rsiz_filled = fill ? displaySize - rbeg + 1 : rsiz;
+  unsigned int rsiz_filled = fill ? connSize - rbeg + 1 : rsiz;
 
   if (text) {
     int isUTF8 = 0;
@@ -1264,8 +1332,8 @@ static int handleWrite(Connection *c, brlapi_packetType_t type, brlapi_packet_t
       }
       logConversionResult(c, rsiz, textLen);
       len -= sout / sizeof(wchar_t);
-      if (len > displaySize - rbeg + 1)
-	len = displaySize - rbeg + 1;
+      if (len > connSize - rbeg + 1)
+	len = connSize - rbeg + 1;
 
       lockMutex(&c->brailleWindowMutex);
       wmemcpy(c->brailleWindow.text+rbeg-1, textBuf, len);
@@ -1290,7 +1358,7 @@ static int handleWrite(Connection *c, brlapi_packetType_t type, brlapi_packet_t
       end = rbeg-1 + len;
     }
     if (fill)
-      wmemset(c->brailleWindow.text+end, L' ', displaySize - end);
+      wmemset(c->brailleWindow.text+end, L' ', connSize - end);
 
     // Forget the charset in case it's pointing to a local buffer.
     // This occurs when getCharset() is saved and alloca() isn't available.
@@ -2062,6 +2130,17 @@ PARAM_READER(driverPropertyValue)
   return NULL;
 }
 
+typedef struct {
+  const uint64_t property;
+  const uint64_t value;
+  unsigned char set:1;
+} CoreTaskData_setDriverProperty;
+
+CORE_TASK_CALLBACK(apiCoreTask_setDriverProperty) {
+  CoreTaskData_setDriverProperty *sdp = data;
+  sdp->set = brl.setDriverProperty(&brl, sdp->property, sdp->value);
+}
+
 PARAM_WRITER(driverPropertyValue)
 {
   if (!brl.setDriverProperty) return "no settable driver properties";
@@ -2074,7 +2153,14 @@ PARAM_WRITER(driverPropertyValue)
     c->fd, subparam, *propertyValue
   );
 
-  if (!brl.setDriverProperty(&brl, subparam, *propertyValue)) return "cannot set driver property";
+  CoreTaskData_setDriverProperty sdp = {
+    .property = subparam,
+    .value = *propertyValue,
+    .set = 0
+  };
+
+  runCoreTask(apiCoreTask_setDriverProperty, &sdp, 1);
+  if (!sdp.set) return "cannot set driver property";
   return NULL;
 }
 
@@ -4437,11 +4523,13 @@ int api_flushOutput(BrailleDisplay *brl) {
     }
 
     if (c != displayed_last || c->brlbufstate==TODISPLAY || update) {
-      unsigned char *oldbuf = disp->buffer, buf[displaySize];
-      disp->buffer = buf;
-      getDots(&c->brailleWindow, buf);
+      unsigned char *oldbuf = disp->buffer, dots[displaySize];
+      wchar_t text[displaySize];
+      disp->buffer = dots;
+      getDots(&c->brailleWindow, dots);
+      getText(&c->brailleWindow, text);
       brl->cursor = c->brailleWindow.cursor-1;
-      if (!trueBraille->writeWindow(brl, c->brailleWindow.text)) ok = 0;
+      if (!trueBraille->writeWindow(brl, text)) ok = 0;
       /* FIXME: the client should have gotten the notification when the write
        * was received, rather than only when it eventually gets displayed
        * (possibly only because of focus change) */
diff --git a/Programs/brldefs.h b/Programs/brldefs.h
index 849056005..e98cf11e9 100644
--- a/Programs/brldefs.h
+++ b/Programs/brldefs.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brltest.c b/Programs/brltest.c
index 349936e22..85ae2c157 100644
--- a/Programs/brltest.c
+++ b/Programs/brltest.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -25,6 +25,7 @@
 
 #include "program.h"
 #include "cmdline.h"
+#include "options.h"
 #include "parameters.h"
 #include "log.h"
 #include "parse.h"
@@ -42,10 +43,9 @@
 
 BrailleDisplay brl;
 
-static char *opt_brailleDevice;
+char *opt_brailleDevice;
 char *opt_driversDirectory;
-static char *opt_tablesDirectory;
-static char *opt_writableDirectory;
+char *opt_tablesDirectory;
 
 BEGIN_OPTION_TABLE(programOptions)
   { .word = "device",
@@ -61,7 +61,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = strtext("directory"),
     .setting.string = &opt_tablesDirectory,
     .internal.setting = TABLES_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to directory containing tables.")
   },
 
@@ -70,7 +70,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = "directory",
     .setting.string = &opt_driversDirectory,
     .internal.setting = DRIVERS_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = "Path to directory for loading drivers."
   },
 
@@ -79,7 +79,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = strtext("directory"),
     .setting.string = &opt_writableDirectory,
     .internal.setting = WRITABLE_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to directory which can be written to.")
   },
 END_OPTION_TABLE(programOptions)
@@ -105,8 +105,6 @@ main (int argc, char *argv[]) {
     PROCESS_OPTIONS(descriptor, argc, argv);
   }
 
-  setWritableDirectory(opt_writableDirectory);
-
   if (argc) {
     driver = *argv++, --argc;
   }
@@ -289,6 +287,11 @@ message (const char *mode, const char *text, MessageOptions options) {
   return 1;
 }
 
+int
+sayMessage (const char *text) {
+  return 1;
+}
+
 #include "scr.h"
 
 KeyTableCommandContext
diff --git a/Programs/brltty-atb.c b/Programs/brltty-atb.c
index 6f86d91f1..99694bf7d 100644
--- a/Programs/brltty-atb.c
+++ b/Programs/brltty-atb.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -20,10 +20,11 @@
 
 #include "program.h"
 #include "cmdline.h"
+#include "options.h"
 #include "log.h"
 #include "atb.h"
 
-static char *opt_tablesDirectory;
+char *opt_tablesDirectory;
 
 BEGIN_OPTION_TABLE(programOptions)
   { .word = "tables-directory",
@@ -31,7 +32,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = strtext("directory"),
     .setting.string = &opt_tablesDirectory,
     .internal.setting = TABLES_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to directory containing tables.")
   },
 END_OPTION_TABLE(programOptions)
diff --git a/Programs/brltty-cldr.c b/Programs/brltty-cldr.c
index 45354784c..b14ba1a3f 100644
--- a/Programs/brltty-cldr.c
+++ b/Programs/brltty-cldr.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brltty-clip.c b/Programs/brltty-clip.c
index 4044f1747..a5d458e0a 100644
--- a/Programs/brltty-clip.c
+++ b/Programs/brltty-clip.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brltty-ctb.c b/Programs/brltty-ctb.c
index 9b99e0ced..595b883a7 100644
--- a/Programs/brltty-ctb.c
+++ b/Programs/brltty-ctb.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -24,6 +24,7 @@
 
 #include "program.h"
 #include "cmdline.h"
+#include "options.h"
 #include "prefs.h"
 #include "log.h"
 #include "file.h"
@@ -35,9 +36,9 @@
 #include "ttb.h"
 #include "ctb.h"
 
-static char *opt_tablesDirectory;
-static char *opt_contractionTable;
-static char *opt_textTable;
+char *opt_tablesDirectory;
+char *opt_contractionTable;
+char *opt_textTable;
 static char *opt_verificationTable;
 
 static char *opt_outputWidth;
@@ -92,7 +93,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = strtext("directory"),
     .setting.string = &opt_tablesDirectory,
     .internal.setting = TABLES_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to directory containing tables.")
   },
 END_OPTION_TABLE(programOptions)
diff --git a/Programs/brltty-hid.c b/Programs/brltty-hid.c
index fdda01e2d..523731e1d 100644
--- a/Programs/brltty-hid.c
+++ b/Programs/brltty-hid.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brltty-ktb.c b/Programs/brltty-ktb.c
index 33ac9064e..f01e10d0b 100644
--- a/Programs/brltty-ktb.c
+++ b/Programs/brltty-ktb.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -23,6 +23,7 @@
 
 #include "program.h"
 #include "cmdline.h"
+#include "options.h"
 #include "log.h"
 #include "file.h"
 #include "parse.h"
@@ -31,12 +32,12 @@
 #include "ktb_keyboard.h"
 #include "brl.h"
 
-static char *opt_brailleDriver;
+char *opt_brailleDriver;
 static int opt_audit;
 static int opt_listKeyNames;
 static int opt_listHelpScreen;
 static int opt_listRestructuredText;
-static char *opt_tablesDirectory;
+char *opt_tablesDirectory;
 char *opt_driversDirectory;
 
 BEGIN_OPTION_TABLE(programOptions)
@@ -76,7 +77,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = strtext("directory"),
     .setting.string = &opt_tablesDirectory,
     .internal.setting = TABLES_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to directory containing tables.")
   },
 
@@ -85,7 +86,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = strtext("directory"),
     .setting.string = &opt_driversDirectory,
     .internal.setting = DRIVERS_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to directory for loading drivers.")
   },
 END_OPTION_TABLE(programOptions)
diff --git a/Programs/brltty-lscmds.c b/Programs/brltty-lscmds.c
index 859256ed7..11660763c 100644
--- a/Programs/brltty-lscmds.c
+++ b/Programs/brltty-lscmds.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brltty-lsinc.c b/Programs/brltty-lsinc.c
index 909fb6122..c4507e2d6 100644
--- a/Programs/brltty-lsinc.c
+++ b/Programs/brltty-lsinc.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brltty-morse.c b/Programs/brltty-morse.c
index 5faa2abe6..9e818f254 100644
--- a/Programs/brltty-morse.c
+++ b/Programs/brltty-morse.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -22,6 +22,7 @@
 
 #include "log.h"
 #include "cmdline.h"
+#include "options.h"
 #include "prefs.h"
 #include "parse.h"
 #include "tune_utils.h"
diff --git a/Programs/brltty-pty.c b/Programs/brltty-pty.c
index cfe2e18f6..a29e0b587 100644
--- a/Programs/brltty-pty.c
+++ b/Programs/brltty-pty.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -29,6 +29,7 @@
 #include <errno.h>
 #include <limits.h>
 #include <sys/wait.h>
+#include <sys/ioctl.h>
 
 #include "log.h"
 #include "cmdline.h"
@@ -138,6 +139,18 @@ writeDriverDirective (const char *format, ...) {
   }
 }
 
+static int
+setWindowSize (int tty, size_t columns, size_t lines) {
+  struct winsize size = {
+    .ws_col = columns,
+    .ws_row = lines,
+  };
+
+  if (ioctl(tty, TIOCSWINSZ, &size) != -1) return 1;
+  logSystemError("ioctl[TIOCSWINSZ]");
+  return 0;
+}
+
 static int
 setEnvironmentString (const char *variable, const char *string) {
   int result = setenv(variable, string, 1);
@@ -155,7 +168,7 @@ setEnvironmentInteger (const char *variable, int integer) {
 }
 
 static int
-setEnvironmentVariables (void) {
+setEnvironmentVariables (size_t *columns, size_t *lines) {
   if (!setEnvironmentString("TERM_PROGRAM", programName)) return 0;
   if (!setEnvironmentString("TERM_PROGRAM_VERSION", PACKAGE_VERSION)) return 0;
 
@@ -177,49 +190,55 @@ setEnvironmentVariables (void) {
     }
   }
 
-  {
-    size_t width, height;
-
-    if (getConsoleSize(&width, &height)) {
-      if (!setEnvironmentInteger("COLUMNS", width)) return 0;
-      if (!setEnvironmentInteger("LINES", height)) return 0;
-    }
+  if (getConsoleSize(columns, lines)) {
+    if (!setEnvironmentInteger("COLUMNS", *columns)) return 0;
+    if (!setEnvironmentInteger("LINES", *lines)) return 0;
+  } else {
+    *columns = 0;
+    *lines = 0;
   }
 
   return setEnvironmentString("TERM", ptyGetTerminalType());
 }
 
+static PtyObject *ptyObject = NULL;
+
 static int
-prepareChild (PtyObject *pty) {
+prepareChild (void) {
   setsid();
-  ptyCloseMaster(pty);
+  ptyCloseMaster(ptyObject);
 
-  if (setEnvironmentVariables()) {
+  size_t columns, lines;
+  if (setEnvironmentVariables(&columns, &lines)) {
     int tty;
-    if (!ptyOpenSlave(pty, &tty)) return 0;
-    int keep = 0;
-
-    for (int fd=0; fd<=2; fd+=1) {
-      if (fd == tty) {
-        keep = 1;
-      } else {
-        int result = dup2(tty, fd);
-
-        if (result == -1) {
-          logSystemError("dup2");
-          return 0;
+    if (!ptyOpenSlave(ptyObject, &tty)) return 0;
+    setWindowSize(tty, columns, lines);
+
+    {
+      int keep = 0;
+
+      for (int fd=0; fd<=2; fd+=1) {
+        if (fd == tty) {
+          keep = 1;
+        } else {
+          int result = dup2(tty, fd);
+
+          if (result == -1) {
+            logSystemError("dup2");
+            return 0;
+          }
         }
       }
-    }
 
-    if (!keep) close(tty);
+      if (!keep) close(tty);
+    }
   }
 
   return 1;
 }
 
 static int
-runChild (PtyObject *pty, char **command) {
+runChild (char **command) {
   char *defaultCommand[2];
 
   if (!(command && *command)) {
@@ -228,10 +247,11 @@ runChild (PtyObject *pty, char **command) {
 
     defaultCommand[0] = shell;
     defaultCommand[1] = NULL;
+
     command = defaultCommand;
   }
 
-  if (prepareChild(pty)) {
+  if (prepareChild()) {
     int result = execvp(*command, command);
 
     if (result == -1) {
@@ -267,6 +287,16 @@ parentQuitMonitor (int signalNumber) {
   parentIsQuitting = 1;
 }
 
+static void
+windowSizeMonitor (int signalNumber) {
+  size_t columns, lines;
+
+  if (getConsoleSize(&columns, &lines)) {
+    setWindowSize(ptyGetMaster(ptyObject), columns, lines);
+    ptyResizeTerminal(lines, columns);
+  }
+}
+
 static void
 childTerminationMonitor (int signalNumber) {
   childHasTerminated = 1;
@@ -277,13 +307,13 @@ installSignalHandlers (void) {
   if (!asyncHandleSignal(SIGTERM, parentQuitMonitor, NULL)) return 0;
   if (!asyncHandleSignal(SIGINT, parentQuitMonitor, NULL)) return 0;
   if (!asyncHandleSignal(SIGQUIT, parentQuitMonitor, NULL)) return 0;
+  if (!asyncHandleSignal(SIGWINCH, windowSizeMonitor, NULL)) return 0;
   return asyncHandleSignal(SIGCHLD, childTerminationMonitor, NULL);
 }
 
 static
 ASYNC_MONITOR_CALLBACK(standardInputMonitor) {
-  PtyObject *pty = parameters->data;
-  if (ptyProcessTerminalInput(pty)) return 1;
+  if (ptyProcessTerminalInput(ptyObject)) return 1;
 
   parentIsQuitting = 1;
   return 0;
@@ -337,7 +367,7 @@ reapExitStatus (pid_t pid) {
 }
 
 static int
-runParent (PtyObject *pty, pid_t child) {
+runParent (pid_t child) {
   int exitStatus = PROG_EXIT_FATAL;
   AsyncHandle ptyInputHandle;
 
@@ -345,19 +375,19 @@ runParent (PtyObject *pty, pid_t child) {
   childHasTerminated = 0;
   slaveHasBeenClosed = 0;
 
-  if (asyncReadFile(&ptyInputHandle, ptyGetMaster(pty), 1, ptyInputHandler, NULL)) {
+  if (asyncReadFile(&ptyInputHandle, ptyGetMaster(ptyObject), 1, ptyInputHandler, NULL)) {
     AsyncHandle standardInputHandle;
 
-    if (asyncMonitorFileInput(&standardInputHandle, STDIN_FILENO, standardInputMonitor, pty)) {
+    if (asyncMonitorFileInput(&standardInputHandle, STDIN_FILENO, standardInputMonitor, NULL)) {
       if (installSignalHandlers()) {
         if (!isatty(2)) {
           unsigned char level = LOG_NOTICE;
           ptySetTerminalLogLevel(level);
-          ptySetLogLevel(pty, level);
+          ptySetLogLevel(ptyObject, level);
         }
 
-        if (ptyBeginTerminal(pty, opt_driverDirectives)) {
-          writeDriverDirective("path %s", ptyGetPath(pty));
+        if (ptyBeginTerminal(ptyObject, opt_driverDirectives)) {
+          writeDriverDirective("path %s", ptyGetPath(ptyObject));
 
           asyncAwaitCondition(INT_MAX, parentTerminationTester, NULL);
           if (!parentIsQuitting) exitStatus = reapExitStatus(child);
@@ -378,7 +408,6 @@ runParent (PtyObject *pty, pid_t child) {
 int
 main (int argc, char *argv[]) {
   int exitStatus = PROG_EXIT_FATAL;
-  PtyObject *pty;
 
   {
     const CommandLineDescriptor descriptor = {
@@ -455,9 +484,9 @@ main (int argc, char *argv[]) {
     }
   }
 
-  if ((pty = ptyNewObject())) {
-    ptySetLogInput(pty, opt_logInput);
-    const char *ttyPath = ptyGetPath(pty);
+  if ((ptyObject = ptyNewObject())) {
+    ptySetLogInput(ptyObject, opt_logInput);
+    const char *ttyPath = ptyGetPath(ptyObject);
 
     if (opt_showPath) {
       FILE *stream = stderr;
@@ -472,14 +501,15 @@ main (int argc, char *argv[]) {
         break;
 
       case 0:
-        _exit(runChild(pty, argv));
+        _exit(runChild(argv));
 
       default:
-        exitStatus = runParent(pty, child);
+        exitStatus = runParent(child);
         break;
     }
 
-    ptyDestroyObject(pty);
+    ptyDestroyObject(ptyObject);
+    ptyObject = NULL;
   }
 
   return exitStatus;
diff --git a/Programs/brltty-trtxt.c b/Programs/brltty-trtxt.c
index 08368cb0e..0e847b5da 100644
--- a/Programs/brltty-trtxt.c
+++ b/Programs/brltty-trtxt.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -24,6 +24,7 @@
 
 #include "program.h"
 #include "cmdline.h"
+#include "options.h"
 #include "log.h"
 #include "file.h"
 #include "unicode.h"
@@ -31,7 +32,7 @@
 #include "brl_dots.h"
 #include "ttb.h"
 
-static char *opt_tablesDirectory;
+char *opt_tablesDirectory;
 static char *opt_inputTable;
 static char *opt_outputTable;
 
@@ -75,7 +76,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = strtext("directory"),
     .setting.string = &opt_tablesDirectory,
     .internal.setting = TABLES_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to directory for text tables.")
   },
 END_OPTION_TABLE(programOptions)
diff --git a/Programs/brltty-ttb.c b/Programs/brltty-ttb.c
index ff53e1cc5..6b618a19e 100644
--- a/Programs/brltty-ttb.c
+++ b/Programs/brltty-ttb.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -27,6 +27,7 @@
 #include "strfmt.h"
 #include "program.h"
 #include "cmdline.h"
+#include "options.h"
 #include "file.h"
 #include "get_select.h"
 #include "brl_dots.h"
@@ -134,7 +135,7 @@ showUndefinedCharacters (TextTableData *ttd) {
 static char *opt_charset;
 static char *opt_inputFormat;
 static char *opt_outputFormat;
-static char *opt_tablesDirectory;
+char *opt_tablesDirectory;
 static int opt_edit;
 
 #ifdef HAVE_UNDEFINED_CHARACTERS_SUPPORT
@@ -182,7 +183,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = "directory",
     .setting.string = &opt_tablesDirectory,
     .internal.setting = TABLES_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to directory containing text tables.")
   },
 END_OPTION_TABLE(programOptions)
diff --git a/Programs/brltty-tune.c b/Programs/brltty-tune.c
index 6b5049d0a..d80e3cf24 100644
--- a/Programs/brltty-tune.c
+++ b/Programs/brltty-tune.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -23,6 +23,7 @@
 
 #include "log.h"
 #include "cmdline.h"
+#include "options.h"
 #include "prefs.h"
 #include "tune_utils.h"
 #include "tune_builder.h"
diff --git a/Programs/brltty.c b/Programs/brltty.c
index bbe9b2053..48bc6f43a 100644
--- a/Programs/brltty.c
+++ b/Programs/brltty.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brltty.java b/Programs/brltty.java
index 42c265fb9..e4d90e424 100644
--- a/Programs/brltty.java
+++ b/Programs/brltty.java
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/brltty_jni.c b/Programs/brltty_jni.c
index bc9942941..8c1a69619 100644
--- a/Programs/brltty_jni.c
+++ b/Programs/brltty_jni.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/charset.c b/Programs/charset.c
index a7ed6a4c4..1d58f038b 100644
--- a/Programs/charset.c
+++ b/Programs/charset.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/charset_grub.c b/Programs/charset_grub.c
index be74e473c..5326c4b4b 100644
--- a/Programs/charset_grub.c
+++ b/Programs/charset_grub.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/charset_iconv.c b/Programs/charset_iconv.c
index 96c9da8f9..3429d3ea0 100644
--- a/Programs/charset_iconv.c
+++ b/Programs/charset_iconv.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/charset_internal.h b/Programs/charset_internal.h
index 371ccaa77..3625e1bd3 100644
--- a/Programs/charset_internal.h
+++ b/Programs/charset_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/charset_msdos.c b/Programs/charset_msdos.c
index bbbc2c920..b1bc10c66 100644
--- a/Programs/charset_msdos.c
+++ b/Programs/charset_msdos.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/charset_none.c b/Programs/charset_none.c
index a9f0f3677..efaf9fdc1 100644
--- a/Programs/charset_none.c
+++ b/Programs/charset_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/charset_windows.c b/Programs/charset_windows.c
index ce35ea69f..543c60310 100644
--- a/Programs/charset_windows.c
+++ b/Programs/charset_windows.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cldr.c b/Programs/cldr.c
index d8fc21b9a..80a8f05e4 100644
--- a/Programs/cldr.c
+++ b/Programs/cldr.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/clipboard.c b/Programs/clipboard.c
index 3367d4926..5ea8b6481 100644
--- a/Programs/clipboard.c
+++ b/Programs/clipboard.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -23,6 +23,7 @@
 
 #include "log.h"
 #include "clipboard.h"
+#include "unicode.h"
 #include "utf8.h"
 #include "queue.h"
 #include "lock.h"
@@ -119,7 +120,7 @@ getClipboardContentLength (ClipboardObject *cpb) {
 
 int
 truncateClipboardContent (ClipboardObject *cpb, size_t length) {
-  if (length >= cpb->buffer.length) return 0;
+  if (length > cpb->buffer.length) return 0;
   cpb->buffer.length = length;
   return 1;
 }
@@ -130,8 +131,7 @@ clearClipboardContent (ClipboardObject *cpb) {
   const wchar_t *characters = getClipboardContent(cpb, &length);
 
   if (!addClipboardHistory(cpb, characters, length)) return 0;
-  truncateClipboardContent(cpb, 0);
-  return 1;
+  return truncateClipboardContent(cpb, 0);
 }
 
 int
@@ -153,16 +153,72 @@ appendClipboardContent (ClipboardObject *cpb, const wchar_t *characters, size_t
     cpb->buffer.size = newSize;
   }
 
-  wmemcpy(&cpb->buffer.characters[cpb->buffer.length], characters, length);
-  cpb->buffer.length += length;
+  {
+    const wchar_t *from = characters;
+    const wchar_t *fromEnd = from + length;
+    wchar_t *to = &cpb->buffer.characters[cpb->buffer.length];
+
+    while (from < fromEnd) {
+      wchar_t character = *from++;
+      if (character == UNICODE_ZERO_WIDTH_SPACE) continue;
+      *to++ = character;
+    }
+
+    cpb->buffer.length = to - cpb->buffer.characters;
+  }
+
   return 1;
 }
 
 int
 setClipboardContent (ClipboardObject *cpb, const wchar_t *characters, size_t length) {
-  int truncated = truncateClipboardContent(cpb, 0);
-  int appended = appendClipboardContent(cpb, characters, length);
-  return truncated || appended;
+  if (!clearClipboardContent(cpb)) return 0;
+  return appendClipboardContent(cpb, characters, length);
+}
+
+int
+copyClipboardContent (
+  ClipboardObject *cpb, const wchar_t *characters, size_t length,
+  size_t offset, int insertCR
+) {
+  if (offset > 0) {
+    if (!truncateClipboardContent(cpb, offset)) return 0;
+
+    if (insertCR) {
+      size_t length;
+      const wchar_t *content = getClipboardContent(cpb, &length);
+
+      if (content) {
+        int truncate = 0;
+
+        while (length > 0) {
+          size_t last = length - 1;
+          wchar_t character = content[last];
+
+          if (character == WC_C('\r')) insertCR = 0;
+          if (character != WC_C(' ')) break;
+
+          truncate = 1;
+          length = last;
+        }
+
+        if (truncate) {
+          if (!truncateClipboardContent(cpb, length)) {
+            return 0;
+          }
+        }
+
+        if (insertCR && (length > 0)) {
+          static const wchar_t cr = WC_C('\r');
+          if (!appendClipboardContent(cpb, &cr, 1)) return 0;
+        }
+      }
+    }
+  } else if (!clearClipboardContent(cpb)) {
+    return 0;
+  }
+
+  return appendClipboardContent(cpb, characters, length);
 }
 
 int
@@ -175,9 +231,8 @@ appendClipboardContentUTF8 (ClipboardObject *cpb, const char *text) {
 
 int
 setClipboardContentUTF8 (ClipboardObject *cpb, const char *text) {
-  int truncated = truncateClipboardContent(cpb, 0);
-  int appended = appendClipboardContentUTF8(cpb, text);
-  return truncated || appended;
+  if (!clearClipboardContent(cpb)) return 0;
+  return appendClipboardContentUTF8(cpb, text);
 }
 
 static void
diff --git a/Programs/cmd.c b/Programs/cmd.c
index 664295fd0..232bd184a 100644
--- a/Programs/cmd.c
+++ b/Programs/cmd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_brlapi.c b/Programs/cmd_brlapi.c
index c0675595e..8e5808207 100644
--- a/Programs/cmd_brlapi.c
+++ b/Programs/cmd_brlapi.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_brlapi.h b/Programs/cmd_brlapi.h
index db513b85f..9e9247f0b 100644
--- a/Programs/cmd_brlapi.h
+++ b/Programs/cmd_brlapi.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_clipboard.c b/Programs/cmd_clipboard.c
index c56d56713..bb4138803 100644
--- a/Programs/cmd_clipboard.c
+++ b/Programs/cmd_clipboard.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -24,6 +24,7 @@
 
 #include "log.h"
 #include "alert.h"
+#include "message.h"
 #include "cmd_queue.h"
 #include "cmd_utils.h"
 #include "cmd_clipboard.h"
@@ -34,6 +35,7 @@
 #include "file.h"
 #include "datafile.h"
 #include "utf8.h"
+#include "ascii.h"
 #include "core.h"
 
 typedef struct {
@@ -42,7 +44,7 @@ typedef struct {
   struct {
     int column;
     int row;
-    int offset;
+    size_t offset;
   } begin;
 } ClipboardCommandData;
 
@@ -52,20 +54,16 @@ cpbReadScreen (ClipboardCommandData *ccd, size_t *length, int fromColumn, int fr
   int columns = toColumn - fromColumn + 1;
   int rows = toRow - fromRow + 1;
 
-  if ((columns >= 1) && (rows >= 1) && (ccd->begin.offset >= 0)) {
+  if ((columns >= 1) && (rows >= 1)) {
     wchar_t fromBuffer[rows * columns];
 
     if (readScreenText(fromColumn, fromRow, columns, rows, fromBuffer)) {
       wchar_t toBuffer[rows * (columns + 1)];
       wchar_t *toAddress = toBuffer;
-
       const wchar_t *fromAddress = fromBuffer;
-      int row;
-
-      for (row=fromRow; row<=toRow; row+=1) {
-        int column;
 
-        for (column=fromColumn; column<=toColumn; column+=1) {
+      for (int row=fromRow; row<=toRow; row+=1) {
+        for (int column=fromColumn; column<=toColumn; column+=1) {
           wchar_t character = *fromAddress++;
           if (iswcntrl(character) || iswspace(character)) character = WC_C(' ');
           *toAddress++ = character;
@@ -88,49 +86,31 @@ cpbReadScreen (ClipboardCommandData *ccd, size_t *length, int fromColumn, int fr
   return newBuffer;
 }
 
-static int
-cpbEndOperation (ClipboardCommandData *ccd, const wchar_t *characters, size_t length,
-                 int insertCR) {
-  lockMainClipboard();
-    if (insertCR && ccd->begin.offset >= 1) {
-      size_t length;
-      const wchar_t *characters = getClipboardContent(ccd->clipboard, &length);
-      if (length > ccd->begin.offset) length = ccd->begin.offset;
-      while (length > 0) {
-        size_t last = length - 1;
-        if (characters[last] == WC_C('\r')) insertCR = 0;
-        if (characters[last] != WC_C(' ')) break;
-        length = last;
-      }
-      ccd->begin.offset = length;
-    }
-    if (ccd->begin.offset <= 0) insertCR = 0;
-
-    int truncated = truncateClipboardContent(ccd->clipboard, ccd->begin.offset);
-    if (insertCR) appendClipboardContent(ccd->clipboard, &(wchar_t){WC_C('\r')}, 1);
-    int appended = appendClipboardContent(ccd->clipboard, characters, length);
-  unlockMainClipboard();
-
-  if (truncated || appended) onMainClipboardUpdated();
-  if (!appended) return 0;
-  alert(ALERT_CLIPBOARD_END);
-  return 1;
-}
-
 static void
-cpbBeginOperation (ClipboardCommandData *ccd, int column, int row) {
+cpbBeginOperation (ClipboardCommandData *ccd, int column, int row, int append) {
   ccd->begin.column = column;
   ccd->begin.row = row;
+  ccd->begin.offset = append? getClipboardContentLength(ccd->clipboard): 0;
+  alert(ALERT_CLIPBOARD_BEGIN);
+}
 
+static int
+cpbEndOperation (ClipboardCommandData *ccd, const wchar_t *characters, size_t length, int insertCR) {
   lockMainClipboard();
-    ccd->begin.offset = getClipboardContentLength(ccd->clipboard);
+  int copied = copyClipboardContent(ccd->clipboard, characters, length, ccd->begin.offset, insertCR);
   unlockMainClipboard();
 
-  alert(ALERT_CLIPBOARD_BEGIN);
+  if (!copied) return 0;
+  alert(ALERT_CLIPBOARD_END);
+  onMainClipboardUpdated();
+  return 1;
 }
 
 static int
 cpbRectangularCopy (ClipboardCommandData *ccd, int column, int row) {
+  if (row < ccd->begin.row) return 0;
+  if (column < ccd->begin.column) return 0;
+
   int copied = 0;
   size_t length;
   wchar_t *buffer = cpbReadScreen(ccd, &length, ccd->begin.column, ccd->begin.row, column, row);
@@ -178,6 +158,9 @@ cpbRectangularCopy (ClipboardCommandData *ccd, int column, int row) {
 
 static int
 cpbLinearCopy (ClipboardCommandData *ccd, int column, int row) {
+  if (row < ccd->begin.row) return 0;
+  if ((row == ccd->begin.row) && (column < ccd->begin.column)) return 0;
+
   int copied = 0;
   ScreenDescription screen;
   describeScreen(&screen);
@@ -261,46 +244,95 @@ cpbLinearCopy (ClipboardCommandData *ccd, int column, int row) {
 
 static int
 pasteCharacters (const wchar_t *characters, size_t count) {
-  if (!characters) return 0;
-  if (!count) return 0;
+  const wchar_t *character = characters;
+  const wchar_t *end = character + count;
 
-  if (!isMainScreen()) return 0;
-  if (isRouting()) return 0;
-
-  {
-    unsigned int i;
-
-    for (i=0; i<count; i+=1) {
-      if (!insertScreenKey(characters[i])) return 0;
-    }
+  while (character < end) {
+    if (!insertScreenKey(*character++)) return 0;
   }
 
   return 1;
 }
 
 static int
-cpbPaste (ClipboardCommandData *ccd, unsigned int index) {
-  int pasted;
+cpbPaste (ClipboardCommandData *ccd, unsigned int index, int useAlternateMode) {
+  if (!isMainScreen()) return 0;
+  if (isRouting()) return 0;
 
-  lockMainClipboard();
-    const wchar_t *characters;
-    size_t length;
+  if (!prefs.alternatePasteModeEnabled) useAlternateMode = 0;
+  int bracketed;
 
-    if (index) {
-      characters = getClipboardHistory(ccd->clipboard, index-1, &length);
-    } else {
-      characters = getClipboardContent(ccd->clipboard, &length);
+  {
+    ScreenPasteMode mode = getScreenPasteMode();
+
+    switch (mode) {
+      case SPM_UNKNOWN:
+        bracketed = useAlternateMode;
+        break;
+
+      case SPM_BRACKETED:
+        bracketed = !useAlternateMode;
+        break;
+
+      default:
+        logMessage(LOG_WARNING, "unexpected screen paste mode: %d", mode);
+        /* fall through */
+      case SPM_PLAIN:
+        bracketed = 0;
+        break;
     }
+  }
+
+  int pasted = 0;
+  lockMainClipboard();
+
+  const wchar_t *characters;
+  size_t length;
 
+  if (index) {
+    characters = getClipboardHistory(ccd->clipboard, index-1, &length);
+  } else {
+    characters = getClipboardContent(ccd->clipboard, &length);
+  }
+
+  if (characters) {
     while (length > 0) {
       size_t last = length - 1;
-      if (characters[last] != WC_C(' ')) break;
+      if (!iswspace(characters[last])) break;
       length = last;
     }
 
-    pasted = pasteCharacters(characters, length);
-  unlockMainClipboard();
+    if (length > 0) {
+      if (bracketed) {
+        static const wchar_t sequence[] = {
+          ASCII_ESC, WC_C('['), WC_C('2'), WC_C('0'), WC_C('0'), WC_C('~')
+        };
+
+        if (!pasteCharacters(sequence, ARRAY_COUNT(sequence))) {
+          goto PASTE_FAILED;
+        }
+      }
+
+      if (!pasteCharacters(characters, length)) {
+        goto PASTE_FAILED;
+      }
+
+      if (bracketed) {
+        static const wchar_t sequence[] = {
+          ASCII_ESC, WC_C('['), WC_C('2'), WC_C('0'), WC_C('1'), WC_C('~')
+        };
+
+        if (!pasteCharacters(sequence, ARRAY_COUNT(sequence))) {
+          goto PASTE_FAILED;
+        }
+      }
+    }
+
+    pasted = 1;
+  }
 
+PASTE_FAILED:
+  unlockMainClipboard();
   return pasted;
 }
 
@@ -456,9 +488,21 @@ handleClipboardCommands (int command, void *data) {
   ClipboardCommandData *ccd = data;
 
   switch (command & BRL_MSK_CMD) {
+    {
+      int useAlternateMode;
+
     case BRL_CMD_PASTE:
-      if (!cpbPaste(ccd, 0)) alert(ALERT_COMMAND_REJECTED);
+      useAlternateMode = 0;
+      goto doPaste;
+
+    case BRL_CMD_PASTE_ALTMODE:
+      useAlternateMode = 1;
+      goto doPaste;
+
+    doPaste:
+      if (!cpbPaste(ccd, 0, useAlternateMode)) alert(ALERT_COMMAND_REJECTED);
       break;
+    }
 
     case BRL_CMD_CLIP_SAVE:
       alert(cpbSave(ccd)? ALERT_COMMAND_DONE: ALERT_COMMAND_REJECTED);
@@ -546,39 +590,40 @@ handleClipboardCommands (int command, void *data) {
     }
 
     default: {
-      int arg = command & BRL_MSK_ARG;
-      int ext = BRL_CODE_GET(EXT, command);
+      int arg1 = BRL_CODE_GET(ARG, command);
+      int arg2 = BRL_CODE_GET(EXT, command);
 
       switch (command & BRL_MSK_BLK) {
         {
-          int clear;
+          int append;
           int column, row;
 
         case BRL_CMD_BLK(CLIP_NEW):
-          clear = 1;
+          append = 0;
           goto doClipBegin;
 
         case BRL_CMD_BLK(CLIP_ADD):
-          clear = 0;
+          append = 1;
           goto doClipBegin;
 
         doClipBegin:
-          if (getCharacterCoordinates(arg, &row, &column, NULL, 0)) {
-            if (clear) clearClipboardContent(ccd->clipboard);
-            cpbBeginOperation(ccd, column, row);
-          } else {
-            alert(ALERT_COMMAND_REJECTED);
+          if (getCharacterCoordinates(arg1, &row, &column, NULL, 0)) {
+            cpbBeginOperation(ccd, column, row, append);
+            break;
           }
 
+          alert(ALERT_COMMAND_REJECTED);
           break;
         }
 
         case BRL_CMD_BLK(COPY_RECT): {
           int column, row;
 
-          if (getCharacterCoordinates(arg, &row, NULL, &column, 1))
-            if (cpbRectangularCopy(ccd, column, row))
+          if (getCharacterCoordinates(arg1, &row, NULL, &column, 1)) {
+            if (cpbRectangularCopy(ccd, column, row)) {
               break;
+            }
+          }
 
           alert(ALERT_COMMAND_REJECTED);
           break;
@@ -587,35 +632,36 @@ handleClipboardCommands (int command, void *data) {
         case BRL_CMD_BLK(COPY_LINE): {
           int column, row;
 
-          if (getCharacterCoordinates(arg, &row, NULL, &column, 1))
-            if (cpbLinearCopy(ccd, column, row))
+          if (getCharacterCoordinates(arg1, &row, NULL, &column, 1)) {
+            if (cpbLinearCopy(ccd, column, row)) {
               break;
+            }
+          }
 
           alert(ALERT_COMMAND_REJECTED);
           break;
         }
 
         {
-          int clear;
+          int append;
 
         case BRL_CMD_BLK(CLIP_COPY):
-          clear = 1;
-          goto doCopy;
+          append = 0;
+          goto doClipCopy;
 
         case BRL_CMD_BLK(CLIP_APPEND):
-          clear = 0;
-          goto doCopy;
+          append = 1;
+          goto doClipCopy;
 
-        doCopy:
-          if (ext > arg) {
+        doClipCopy:
+          if (arg2 > arg1) {
             int column1, row1;
 
-            if (getCharacterCoordinates(arg, &row1, &column1, NULL, 0)) {
+            if (getCharacterCoordinates(arg1, &row1, &column1, NULL, 0)) {
               int column2, row2;
 
-              if (getCharacterCoordinates(ext, &row2, NULL, &column2, 1)) {
-                if (clear) clearClipboardContent(ccd->clipboard);
-                cpbBeginOperation(ccd, column1, row1);
+              if (getCharacterCoordinates(arg2, &row2, NULL, &column2, 1)) {
+                cpbBeginOperation(ccd, column1, row1, append);
                 if (cpbLinearCopy(ccd, column2, row2)) break;
               }
             }
@@ -625,9 +671,21 @@ handleClipboardCommands (int command, void *data) {
           break;
         }
 
+        {
+          int useAlternateMode;
+
         case BRL_CMD_BLK(PASTE_HISTORY):
-          if (!cpbPaste(ccd, arg)) alert(ALERT_COMMAND_REJECTED);
+          useAlternateMode = 0;
+          goto doPasteHistory;
+
+        case BRL_CMD_BLK(PASTE_HISTORY_ALTMODE):
+          useAlternateMode = 1;
+          goto doPasteHistory;
+
+        doPasteHistory:
+          if (!cpbPaste(ccd, arg1, useAlternateMode)) alert(ALERT_COMMAND_REJECTED);
           break;
+        }
 
         default:
           return 0;
@@ -656,7 +714,7 @@ addClipboardCommands (void) {
 
     ccd->begin.column = 0;
     ccd->begin.row = 0;
-    ccd->begin.offset = -1;
+    ccd->begin.offset = 0;
 
     if (pushCommandHandler("clipboard", KTB_CTX_DEFAULT,
                            handleClipboardCommands, destroyClipboardCommandData, ccd)) {
diff --git a/Programs/cmd_clipboard.h b/Programs/cmd_clipboard.h
index 22577c4cb..ae1077588 100644
--- a/Programs/cmd_clipboard.h
+++ b/Programs/cmd_clipboard.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_custom.c b/Programs/cmd_custom.c
index 5364cfc90..5c23ae69d 100644
--- a/Programs/cmd_custom.c
+++ b/Programs/cmd_custom.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_custom.h b/Programs/cmd_custom.h
index 779f5fa15..0fb0259b4 100644
--- a/Programs/cmd_custom.h
+++ b/Programs/cmd_custom.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_input.c b/Programs/cmd_input.c
index 52da7b9f2..db07dcb37 100644
--- a/Programs/cmd_input.c
+++ b/Programs/cmd_input.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_input.h b/Programs/cmd_input.h
index 4b98a4a6b..b6db56c50 100644
--- a/Programs/cmd_input.h
+++ b/Programs/cmd_input.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_keycodes.c b/Programs/cmd_keycodes.c
index b98d9e17a..62fa93d45 100644
--- a/Programs/cmd_keycodes.c
+++ b/Programs/cmd_keycodes.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_keycodes.h b/Programs/cmd_keycodes.h
index beee20ff7..7d6f42be1 100644
--- a/Programs/cmd_keycodes.h
+++ b/Programs/cmd_keycodes.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_learn.c b/Programs/cmd_learn.c
index b45b19653..66bb3d112 100644
--- a/Programs/cmd_learn.c
+++ b/Programs/cmd_learn.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_learn.h b/Programs/cmd_learn.h
index e6841b746..bf9e332c2 100644
--- a/Programs/cmd_learn.h
+++ b/Programs/cmd_learn.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_miscellaneous.c b/Programs/cmd_miscellaneous.c
index dcc4bce63..44457d116 100644
--- a/Programs/cmd_miscellaneous.c
+++ b/Programs/cmd_miscellaneous.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_miscellaneous.h b/Programs/cmd_miscellaneous.h
index 4c2c2c1f7..0126d9732 100644
--- a/Programs/cmd_miscellaneous.h
+++ b/Programs/cmd_miscellaneous.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_navigation.c b/Programs/cmd_navigation.c
index 09f155de2..f0ebb0140 100644
--- a/Programs/cmd_navigation.c
+++ b/Programs/cmd_navigation.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -169,7 +169,7 @@ testIndent (int column, int row, void *data UNUSED) {
 
   while (column >= 0) {
     wchar_t text = characters[column].text;
-    if (text != WC_C(' ')) return 1;
+    if (!iswspace(text)) return 1;
     column -= 1;
   }
 
@@ -264,8 +264,7 @@ toPreviousNonblankWindow (void) {
 
     for (charIndex=charCount-1; charIndex>=0; charIndex-=1) {
       wchar_t text = characters[charIndex].text;
-
-      if (text != WC_C(' ')) break;
+      if (!iswspace(text)) break;
     }
 
     if (showScreenCursor() &&
@@ -310,8 +309,7 @@ toNextNonblankWindow (void) {
 
     for (charIndex=0; charIndex<charCount; charIndex+=1) {
       wchar_t text = characters[charIndex].text;
-
-      if (text != WC_C(' ')) break;
+      if (!iswspace(text)) break;
     }
 
     if (showScreenCursor() &&
@@ -484,7 +482,7 @@ handleNavigationCommands (int command, void *data) {
           int column = 0;
 
           while (column < length) {
-            if (characters[column].text == WC_C(' ')) break;
+            if (iswspace(characters[column].text)) break;
             column += 1;
           }
 
@@ -577,8 +575,7 @@ handleNavigationCommands (int command, void *data) {
 
               for (charIndex=0; charIndex<charCount; charIndex+=1) {
                 wchar_t text = characters[charIndex].text;
-
-                if (text != WC_C(' ')) break;
+                if (!iswspace(text)) break;
               }
 
               if (charIndex == charCount) goto wrapUp;
@@ -651,8 +648,7 @@ handleNavigationCommands (int command, void *data) {
 
               for (charIndex=0; charIndex<charCount; charIndex+=1) {
                 wchar_t text = characters[charIndex].text;
-
-                if (text != WC_C(' ')) break;
+                if (!iswspace(text)) break;
               }
 
               if (charIndex == charCount) goto wrapDown;
diff --git a/Programs/cmd_navigation.h b/Programs/cmd_navigation.h
index 475639d10..b76af5ebf 100644
--- a/Programs/cmd_navigation.h
+++ b/Programs/cmd_navigation.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_override.c b/Programs/cmd_override.c
index 095f0b8a3..a72a92cb4 100644
--- a/Programs/cmd_override.c
+++ b/Programs/cmd_override.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_override.h b/Programs/cmd_override.h
index 81b1394da..4b8f91823 100644
--- a/Programs/cmd_override.h
+++ b/Programs/cmd_override.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_preferences.c b/Programs/cmd_preferences.c
index 048bfdec3..a63b0f773 100644
--- a/Programs/cmd_preferences.c
+++ b/Programs/cmd_preferences.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_preferences.h b/Programs/cmd_preferences.h
index 49578a4e3..37d8e671e 100644
--- a/Programs/cmd_preferences.h
+++ b/Programs/cmd_preferences.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_queue.c b/Programs/cmd_queue.c
index 24212e690..1d9e26132 100644
--- a/Programs/cmd_queue.c
+++ b/Programs/cmd_queue.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_queue.h b/Programs/cmd_queue.h
index 06fef0a26..69b703fe4 100644
--- a/Programs/cmd_queue.h
+++ b/Programs/cmd_queue.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_speech.c b/Programs/cmd_speech.c
index a0d05b933..f0306cd82 100644
--- a/Programs/cmd_speech.c
+++ b/Programs/cmd_speech.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -199,6 +199,20 @@ handleSpeechCommands (int command, void *data) {
       }
       break;
 
+    case BRL_CMD_SPK_PUNCT_LEVEL:
+      if (canSetSpeechPunctuation(&spk)) {
+        unsigned char newLevel = prefs.speechPunctuation + 1;
+        if (newLevel > SPK_PUNCTUATION_ALL) newLevel = 0;
+
+        if (setSpeechPunctuation(&spk, newLevel, 1)) {
+          prefs.speechPunctuation = newLevel;
+          break;
+        }
+      }
+
+      alert(ALERT_COMMAND_REJECTED);
+      break;
+
     case BRL_CMD_SPEAK_CURR_CHAR:
       speakCurrentCharacter();
       break;
diff --git a/Programs/cmd_speech.h b/Programs/cmd_speech.h
index 4c05b0fc2..abc08a8b1 100644
--- a/Programs/cmd_speech.h
+++ b/Programs/cmd_speech.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_toggle.c b/Programs/cmd_toggle.c
index d791f9edd..aa05f7732 100644
--- a/Programs/cmd_toggle.c
+++ b/Programs/cmd_toggle.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_toggle.h b/Programs/cmd_toggle.h
index e7209e20a..e95431c49 100644
--- a/Programs/cmd_toggle.h
+++ b/Programs/cmd_toggle.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_touch.c b/Programs/cmd_touch.c
index ab46d1864..829e8a042 100644
--- a/Programs/cmd_touch.c
+++ b/Programs/cmd_touch.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_touch.h b/Programs/cmd_touch.h
index b991aade4..cb7cac6e2 100644
--- a/Programs/cmd_touch.h
+++ b/Programs/cmd_touch.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_utils.c b/Programs/cmd_utils.c
index b76f67e78..d144d9efa 100644
--- a/Programs/cmd_utils.c
+++ b/Programs/cmd_utils.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmd_utils.h b/Programs/cmd_utils.h
index 852a9a692..4658455e3 100644
--- a/Programs/cmd_utils.h
+++ b/Programs/cmd_utils.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/cmdline.c b/Programs/cmdline.c
index 23c7660e9..9e72dd3ed 100644
--- a/Programs/cmdline.c
+++ b/Programs/cmdline.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -1141,6 +1141,25 @@ processConfigurationFile (
   }
 }
 
+static void
+toAbsolutePaths (OptionProcessingInformation *info) {
+  char *parent = getWorkingDirectory();
+
+  if (parent) {
+    for (unsigned int optionIndex=0; optionIndex<info->options->count; optionIndex+=1) {
+      const CommandLineOption *option = &info->options->table[optionIndex];
+
+      if (option->internal.adjust == toAbsoluteInstallPath) {
+        if (**option->setting.string) {
+          anchorRelativePath(option->setting.string, parent);
+        }
+      }
+    }
+
+    free(parent);
+  }
+}
+
 void
 resetOptions (const CommandLineOptions *options) {
   for (unsigned int index=0; index<options->count; index+=1) {
@@ -1200,6 +1219,8 @@ processOptions (const CommandLineDescriptor *descriptor, int *argumentCount, cha
 
   if (info.exitImmediately) return PROG_EXIT_FORCE;
   if (info.syntaxError) return PROG_EXIT_SYNTAX;
+
+  toAbsolutePaths(&info);
   return PROG_EXIT_SUCCESS;
 }
 
diff --git a/Programs/cmds.awk b/Programs/cmds.awk
index e86430279..1af873530 100644
--- a/Programs/cmds.awk
+++ b/Programs/cmds.awk
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Programs/config.c b/Programs/config.c
index 5e664dd58..36c988106 100644
--- a/Programs/config.c
+++ b/Programs/config.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -48,8 +48,8 @@
 #include "variables.h"
 #include "datafile.h"
 #include "ttb.h"
-#include "atb.h"
 #include "ctb.h"
+#include "atb.h"
 #include "ktb.h"
 #include "ktb_keyboard.h"
 #include "kbd.h"
@@ -69,6 +69,7 @@
 #include "revision.h"
 #include "service.h"
 #include "cmdline.h"
+#include "options.h"
 #include "profile_types.h"
 #include "brl_input.h"
 #include "cmd_queue.h"
@@ -109,12 +110,29 @@ logProgramBanner (void) {
   }
 }
 
+static const char optionValue_off[] = "off";
+
+static void
+onSettingChange (char **setting, const char *newValue, const char *label) {
+  const char *oldValue = *setting;
+
+  if (!*oldValue) oldValue = optionValue_off;
+  if (!*newValue) newValue = optionValue_off;
+
+  logMessage(LOG_DEBUG,
+    "%s changed: %s -> %s",
+    label, oldValue, newValue
+  );
+
+  changeStringSetting(setting, newValue);
+}
+
 static void
 logProperty (const char *value, const char *variable, const char *label) {
   if (value && *value) {
     if (variable) setGlobalVariable(variable, value);
   } else {
-    value = "none";
+    value = optionValue_off;
   }
 
   logMessage(LOG_INFO, "%s: %s", label, value);
@@ -122,7 +140,7 @@ logProperty (const char *value, const char *variable, const char *label) {
 
 static const char optionOperand_none[] = "no";
 static const char optionOperand_autodetect[] = "auto";
-static const char optionOperand_off[] = "off";
+static const char optionOperand_off[] = "";
 
 static const char *const *const fallbackBrailleDrivers =
   NULL_TERMINATED_STRING_ARRAY(
@@ -225,19 +243,19 @@ static const char *const optionStrings_RemoveService[] = {
   NULL
 };
 
-static char *opt_startMessage;
-static char *opt_stopMessage;
-static char *opt_localeDirectory;
+char *opt_startMessage;
+char *opt_stopMessage;
+char *opt_localeDirectory;
 
 static int opt_version;
 static int opt_verify;
 static int opt_quiet;
-static int opt_noDaemon;
-static int opt_standardError;
+int opt_noDaemon;
+int opt_logToStandardError;
 static char *opt_logLevel;
-static char *opt_logFile;
-static int opt_bootParameters = 1;
-static int opt_environmentVariables;
+char *opt_logFile;
+int opt_environmentVariables;
+int opt_bootParameters = 1;
 static char *opt_messageTime;
 
 static int opt_cancelExecution;
@@ -246,16 +264,14 @@ static const char *const optionStrings_CancelExecution[] = {
   NULL
 };
 
-static char *opt_promptPatterns;
+char *opt_promptPatterns;
 
-static int opt_stayPrivileged;
-static char *opt_privilegeParameters;
+int opt_stayPrivileged;
+char *opt_privilegeParameters;
 
-static char *opt_pidFile;
-static char *opt_configurationFile;
+char *opt_pidFile;
+char *opt_configurationFile;
 
-static char *opt_updatableDirectory;
-static char *opt_writableDirectory;
 char *opt_driversDirectory;
 
 char *opt_brailleDevice;
@@ -263,18 +279,18 @@ static char **brailleDevices = NULL;
 static const char *brailleDevice = NULL;
 int opt_releaseDevice;
 
-static char *opt_brailleDriver;
+char *opt_brailleDriver;
 static char **brailleDrivers = NULL;
 static const BrailleDriver *brailleDriver = NULL;
 static void *brailleObject = NULL;
 static int brailleDriverConstructed;
 
-static char *opt_brailleParameters;
+char *opt_brailleParameters;
 static char *brailleParameters = NULL;
 static char **brailleDriverParameters = NULL;
 
-static char *opt_preferencesFile;
-static char *opt_overridePreferences;
+char *opt_preferencesFile;
+char *opt_overridePreferences;
 
 static char *oldPreferencesFile = NULL;
 static int oldPreferencesEnabled = 1;
@@ -288,30 +304,30 @@ char *opt_keyboardTable;
 KeyTable *keyboardTable = NULL;
 static KeyboardMonitorObject *keyboardMonitor = NULL;
 
-static char *opt_keyboardProperties;
+char *opt_keyboardProperties;
 static KeyboardProperties keyboardProperties;
 
-static int opt_guiKeyboardEnabled;
-static char *opt_guiKeyboardTable;
+int opt_guiKeyboardEnabled;
+char *opt_guiKeyboardTable;
 static KeyTable *guiKeyboardTable = NULL;
 
 #ifdef ENABLE_API
-static int opt_noApi;
-static char *opt_apiParameters = NULL;
+int opt_noApi;
+char *opt_apiParameters;
 static char **apiParameters = NULL;
 #endif /* ENABLE_API */
 
 #ifdef ENABLE_SPEECH_SUPPORT
-static char *opt_speechDriver;
+char *opt_speechDriver;
 static char **speechDrivers = NULL;
 static const SpeechDriver *speechDriver = NULL;
 static void *speechObject = NULL;
 
-static char *opt_speechParameters;
+char *opt_speechParameters;
 static char *speechParameters = NULL;
 static char **speechDriverParameters = NULL;
 
-static char *opt_speechInput;
+char *opt_speechInput;
 static SpeechInputObject *speechInputObject;
 
 int opt_quietIfNoBraille;
@@ -341,11 +357,11 @@ setAutospeakThreshold (void) {
 }
 #endif /* ENABLE_SPEECH_SUPPORT */
 
-static char *opt_screenDriver;
+char *opt_screenDriver;
 static char **screenDrivers = NULL;
 static const ScreenDriver *screenDriver = NULL;
 static void *screenObject = NULL;
-static char *opt_screenParameters;
+char *opt_screenParameters;
 static char *screenParameters = NULL;
 static char **screenDriverParameters = NULL;
 
@@ -396,7 +412,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = strtext("file"),
     .setting.string = &opt_configurationFile,
     .internal.setting = CONFIGURATION_DIRECTORY "/" CONFIGURATION_FILE,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to default settings file.")
   },
 
@@ -491,6 +507,13 @@ BEGIN_OPTION_TABLE(programOptions)
     .description = strtext("Parameters for the speech driver.")
   },
 
+  { .word = "quiet-if-no-braille",
+    .letter = 'Q',
+    .flags = OPT_Config | OPT_EnvVar,
+    .setting.flag = &opt_quietIfNoBraille,
+    .description = strtext("Do not autospeak when braille is not being used.")
+  },
+
   { .word = "speech-input",
     .letter = 'i',
     .flags = OPT_Config | OPT_EnvVar,
@@ -499,13 +522,6 @@ BEGIN_OPTION_TABLE(programOptions)
     .description = strtext("Name of or path to speech input object.")
   },
 
-  { .word = "quiet-if-no-braille",
-    .letter = 'Q',
-    .flags = OPT_Config | OPT_EnvVar,
-    .setting.flag = &opt_quietIfNoBraille,
-    .description = strtext("Do not autospeak when braille is not being used.")
-  },
-
   { .word = "autospeak-threshold",
     .flags = OPT_Config | OPT_EnvVar | OPT_Format,
     .argument = strtext("quality"),
@@ -628,7 +644,7 @@ BEGIN_OPTION_TABLE(programOptions)
 
   { .word = "standard-error",
     .letter = 'e',
-    .setting.flag = &opt_standardError,
+    .setting.flag = &opt_logToStandardError,
     .description = strtext("Log to standard error rather than to the system log.")
   },
 
@@ -709,7 +725,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = strtext("directory"),
     .setting.string = &opt_tablesDirectory,
     .internal.setting = TABLES_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to directory containing tables.")
   },
 
@@ -719,17 +735,27 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = strtext("directory"),
     .setting.string = &opt_driversDirectory,
     .internal.setting = DRIVERS_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to directory containing drivers.")
   },
 
+  { .word = "helpers-directory",
+    .letter = 'H',
+    .flags = OPT_Config | OPT_EnvVar,
+    .argument = strtext("directory"),
+    .setting.string = &opt_helpersDirectory,
+    .internal.setting = HELPERS_DIRECTORY,
+    .internal.adjust = toAbsoluteInstallPath,
+    .description = strtext("Path to directory containing helper commands.")
+  },
+
   { .word = "updatable-directory",
     .letter = 'U',
     .flags = OPT_Config | OPT_EnvVar,
     .argument = strtext("directory"),
     .setting.string = &opt_updatableDirectory,
     .internal.setting = UPDATABLE_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to directory which contains files that can be updated.")
   },
 
@@ -739,7 +765,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = strtext("directory"),
     .setting.string = &opt_writableDirectory,
     .internal.setting = WRITABLE_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to directory which can be written to.")
   },
 
@@ -748,7 +774,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = strtext("directory"),
     .setting.string = &opt_localeDirectory,
     .internal.setting = LOCALE_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to directory which contains message localizations.")
   },
 
@@ -757,7 +783,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .flags = OPT_Config | OPT_EnvVar,
     .argument = strtext("file"),
     .setting.string = &opt_pidFile,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("Path to process identifier file.")
   },
 
@@ -837,7 +863,7 @@ setLogLevels (void) {
   {
     unsigned char level;
 
-    if (opt_standardError) {
+    if (opt_logToStandardError) {
       level = systemLogLevel;
     } else {
       level = LOG_NOTICE;
@@ -895,8 +921,7 @@ brlttyPrepare (int argc, char *argv[]) {
   }
 
   setMessagesDirectory(opt_localeDirectory);
-  setUpdatableDirectory(opt_updatableDirectory);
-  setWritableDirectory(opt_writableDirectory);
+  anchorRelativePath(&opt_preferencesFile, getUpdatableDirectory());
 
   setLogLevels();
   onProgramExit("log", exitLog, NULL);
@@ -1309,9 +1334,6 @@ int
 changeKeyboardTable (const char *name) {
   KeyTable *table = NULL;
 
-  if (!*name) name = "";
-  if (strcmp(name, optionOperand_off) == 0) name = "";
-
   if (*name) {
     char *path = makeKeyboardTablePath(opt_tablesDirectory, name);
 
@@ -1345,10 +1367,7 @@ changeKeyboardTable (const char *name) {
     makeKeyboardHelpPage();
   }
 
-  if (!*name) name = optionOperand_off;
-  logMessage(LOG_DEBUG, "keyboard table changed: %s -> %s", opt_keyboardTable, name);
-
-  changeStringSetting(&opt_keyboardTable, name);
+  onSettingChange(&opt_keyboardTable, name, "keyboard table");
   return 1;
 }
 
@@ -1372,9 +1391,6 @@ int
 changeGuiKeyboardTable (const char *name) {
   KeyTable *table = NULL;
 
-  if (!*name) name = "";
-  if (strcmp(name, optionOperand_off) == 0) name = "";
-
   if (*name) {
     char *path = makeKeyboardTablePath(opt_tablesDirectory, name);
 
@@ -1402,9 +1418,7 @@ changeGuiKeyboardTable (const char *name) {
     guiKeyboardTable = table;
   }
 
-  if (!*name) name = optionOperand_off;
-  logMessage(LOG_DEBUG, "GUI keyboard table changed: %s -> %s", opt_guiKeyboardTable, name);
-  changeStringSetting(&opt_guiKeyboardTable, name);
+  onSettingChange(&opt_guiKeyboardTable, name, "GUI keyboard table");
   return 1;
 }
 
@@ -1651,9 +1665,22 @@ savePreferences (void) {
   char *path = makePreferencesFilePath(opt_preferencesFile);
 
   if (path) {
-    if (savePreferencesFile(path)) {
-      ok = 1;
-      oldPreferencesEnabled = 0;
+    static const char suffix[] = ".new";
+    char newPath[strlen(path) + strlen(suffix) + 1];
+    snprintf(newPath, sizeof(newPath), "%s%s", path, suffix);
+
+    if (savePreferencesFile(newPath)) {
+      logMessage(LOG_DEBUG,
+        "renaming new preferences file: %s -> %s",
+        newPath, path
+      );
+
+      if (rename(newPath, path) != -1) {
+        ok = 1;
+        oldPreferencesEnabled = 0;
+      } else {
+        logSystemError("rename");
+      }
     }
 
     free(path);
@@ -3017,7 +3044,7 @@ brlttyStart (void) {
 
     detachStandardInput();
     detachStandardOutput();
-    if (!opt_standardError) detachStandardError();
+    if (!opt_logToStandardError) detachStandardError();
 
 #ifdef __MINGW32__
     {
@@ -3031,7 +3058,7 @@ brlttyStart (void) {
         SetStdHandle(STD_INPUT_HANDLE, h);
         SetStdHandle(STD_OUTPUT_HANDLE, h);
 
-        if (!opt_standardError) {
+        if (!opt_logToStandardError) {
           SetStdHandle(STD_ERROR_HANDLE, h);
         }
       }
@@ -3066,6 +3093,7 @@ brlttyStart (void) {
   logProperty(opt_configurationFile, "configurationFile", "Configuration File");
   logProperty(opt_tablesDirectory, "tablesDirectory", "Tables Directory");
   logProperty(opt_driversDirectory, "driversDirectory", "Drivers Directory");
+  logProperty(opt_helpersDirectory, "helpersDirectory", "Helpers Directory");
   logProperty(opt_writableDirectory, "writableDirectory", "Writable Directory");
   logProperty(opt_updatableDirectory, "updatableDirectory", "Updatable Directory");
   logProperty(opt_preferencesFile, "preferencesFile", "Preferences File");
diff --git a/Programs/core.c b/Programs/core.c
index 99153ebd3..3510c8f60 100644
--- a/Programs/core.c
+++ b/Programs/core.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -72,6 +72,7 @@
 #include "brl_utils.h"
 #include "prefs.h"
 #include "api_control.h"
+#include "options.h"
 #include "core.h"
 
 #ifdef ENABLE_SPEECH_SUPPORT
@@ -446,7 +447,7 @@ writeBrailleCharacters (const char *mode, const wchar_t *characters, size_t leng
 
   fillStatusSeparator(textBuffer, brl.buffer);
 
-  return writeBrailleWindow(&brl, textBuffer, 0);
+  return writeBrailleWindow(&brl, textBuffer, SCQ_GOOD);
 }
 
 int
@@ -1425,7 +1426,7 @@ showDotPattern (unsigned char dots, unsigned char duration) {
   }
 
   memset(brl.buffer, dots, brl.textColumns*brl.textRows);
-  if (!writeBrailleWindow(&brl, NULL, 0)) return 0;
+  if (!writeBrailleWindow(&brl, NULL, SCQ_GOOD)) return 0;
 
   drainBrailleOutput(&brl, duration);
   return 1;
@@ -1477,7 +1478,7 @@ typedef struct {
 
   struct {
     AsyncEvent *event;
-    unsigned finished:1;
+    unsigned char finished:1;
   } wait;
 } CoreTaskData;
 
diff --git a/Programs/core.h b/Programs/core.h
index 47d1bc1c0..28e88146e 100644
--- a/Programs/core.h
+++ b/Programs/core.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -92,16 +92,6 @@ extern void fillStatusSeparator (wchar_t *text, unsigned char *dots);
 extern int writeBrailleText (const char *mode, const char *text);
 extern int showBrailleText (const char *mode, const char *text, int minimumDelay);
 
-extern char *opt_driversDirectory;
-extern char *opt_tablesDirectory;
-extern char *opt_textTable;
-extern char *opt_contractionTable;
-extern char *opt_attributesTable;
-extern char *opt_keyboardTable;
-
-extern char *opt_brailleDevice;
-extern int opt_releaseDevice;
-
 extern int isWordBreak (const ScreenCharacter *characters, int x);
 extern int getWordWrapLength (int row, int from, int count);
 extern void setWordWrapStart (int start);
@@ -199,7 +189,6 @@ extern int isAllSpaceCharacters (const ScreenCharacter *characters, int count);
 #ifdef ENABLE_SPEECH_SUPPORT
 extern SpeechSynthesizer spk;
 extern int haveSpeechSynthesizer (void);
-extern int opt_quietIfNoBraille;
 
 extern int isAutospeakActive (void);
 extern unsigned int autospeakMinimumScreenContentQuality;
diff --git a/Programs/crc_algorithms.c b/Programs/crc_algorithms.c
index b173a894b..e18ab252a 100644
--- a/Programs/crc_algorithms.c
+++ b/Programs/crc_algorithms.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/crc_generate.c b/Programs/crc_generate.c
index bc22ceed2..1804ac679 100644
--- a/Programs/crc_generate.c
+++ b/Programs/crc_generate.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/crc_internal.h b/Programs/crc_internal.h
index 4f7c2d702..7f860838b 100644
--- a/Programs/crc_internal.h
+++ b/Programs/crc_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/crc_verify.c b/Programs/crc_verify.c
index c3cbd544f..5f442665b 100644
--- a/Programs/crc_verify.c
+++ b/Programs/crc_verify.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/crctest.c b/Programs/crctest.c
index a3ac775f3..739de2147 100644
--- a/Programs/crctest.c
+++ b/Programs/crctest.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ctb_compile.c b/Programs/ctb_compile.c
index f6bfe223d..1ba5c25e0 100644
--- a/Programs/ctb_compile.c
+++ b/Programs/ctb_compile.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ctb_external.c b/Programs/ctb_external.c
index 2efb4806d..9692db5ac 100644
--- a/Programs/ctb_external.c
+++ b/Programs/ctb_external.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ctb_internal.h b/Programs/ctb_internal.h
index 50be4b73b..9b4769cfe 100644
--- a/Programs/ctb_internal.h
+++ b/Programs/ctb_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ctb_louis.c b/Programs/ctb_louis.c
index 53eeede5e..95a56a688 100644
--- a/Programs/ctb_louis.c
+++ b/Programs/ctb_louis.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ctb_native.c b/Programs/ctb_native.c
index 740704ce3..f66def09d 100644
--- a/Programs/ctb_native.c
+++ b/Programs/ctb_native.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ctb_translate.c b/Programs/ctb_translate.c
index f5d0ad59a..05a15e42f 100644
--- a/Programs/ctb_translate.c
+++ b/Programs/ctb_translate.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -386,6 +386,38 @@ contractText (
   *outputLength = getOutputConsumed(&bcd);
 }
 
+int *
+makeInverseOffsetMap (const int *fromOffsets, int fromCount) {
+  int toCount = fromOffsets[fromCount];
+
+  int *toOffsets;
+  size_t toSize = (toCount + 1) * sizeof(*toOffsets);
+  toOffsets = malloc(toSize);
+
+  if (toOffsets) {
+    int fromOffset = 0;
+    int toOffset = 0;
+
+    while (fromOffset <= fromCount) {
+      int nextToOffset = fromOffsets[fromOffset];
+
+      if (nextToOffset != CTB_NO_OFFSET) {
+        while (toOffset < nextToOffset) {
+          toOffsets[toOffset++] = CTB_NO_OFFSET;
+        }
+
+        toOffsets[toOffset++] = fromOffset;
+      }
+
+      fromOffset += 1;
+    }
+  } else {
+    logMallocError();
+  }
+
+  return toOffsets;
+}
+
 int
 replaceContractionTable (const char *directory, const char *name) {
   ContractionTable *newTable = NULL;
diff --git a/Programs/ctb_translate.h b/Programs/ctb_translate.h
index ee337a50c..6e80fed65 100644
--- a/Programs/ctb_translate.h
+++ b/Programs/ctb_translate.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/dataarea.c b/Programs/dataarea.c
index 1d6297adb..8839b9e7a 100644
--- a/Programs/dataarea.c
+++ b/Programs/dataarea.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/datafile.c b/Programs/datafile.c
index 5fd232cf6..7bdcb423a 100644
--- a/Programs/datafile.c
+++ b/Programs/datafile.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/defaults.h b/Programs/defaults.h
index a088dfd74..e9d66cf5f 100644
--- a/Programs/defaults.h
+++ b/Programs/defaults.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -90,6 +90,7 @@ extern "C" {
 #define DEFAULT_AUTOREPEAT_ENABLED 1		/* 1 for on, 0 for off */
 #define DEFAULT_AUTOREPEAT_INTERVAL 10	/* hundredths of a second */
 #define DEFAULT_AUTOREPEAT_PANNING 0	/* 1 for on, 0 for off */
+#define DEFAULT_ALTERNATE_PASTE_MODE_ENABLED 0
 #define DEFAULT_TOUCH_NAVIGATION 0
 #define DEFAULT_TOUCH_SENSITIVITY BRL_SENSITIVITY_MEDIUM
 
diff --git a/Programs/device.c b/Programs/device.c
index 7e4c8484e..c48364a71 100644
--- a/Programs/device.c
+++ b/Programs/device.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/driver.c b/Programs/driver.c
index 522ec1db4..019c95088 100644
--- a/Programs/driver.c
+++ b/Programs/driver.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/drivers.c b/Programs/drivers.c
index 9aa6d8b87..ebdec38fd 100644
--- a/Programs/drivers.c
+++ b/Programs/drivers.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/dynld_dlfcn.c b/Programs/dynld_dlfcn.c
index 89ca29388..f21702d56 100644
--- a/Programs/dynld_dlfcn.c
+++ b/Programs/dynld_dlfcn.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/dynld_dyld.c b/Programs/dynld_dyld.c
index a8c6ad1e7..f662e807a 100644
--- a/Programs/dynld_dyld.c
+++ b/Programs/dynld_dyld.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/dynld_grub.c b/Programs/dynld_grub.c
index 07e696ac2..ff6192c54 100644
--- a/Programs/dynld_grub.c
+++ b/Programs/dynld_grub.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/dynld_none.c b/Programs/dynld_none.c
index 2a6bb3581..5697e2de8 100644
--- a/Programs/dynld_none.c
+++ b/Programs/dynld_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/dynld_shl.c b/Programs/dynld_shl.c
index 786a9212f..f1060fd20 100644
--- a/Programs/dynld_shl.c
+++ b/Programs/dynld_shl.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/dynld_windows.c b/Programs/dynld_windows.c
index c02a37e38..0da0a1ac1 100644
--- a/Programs/dynld_windows.c
+++ b/Programs/dynld_windows.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ezusb.c b/Programs/ezusb.c
index 3ece744f2..2edcd042d 100644
--- a/Programs/ezusb.c
+++ b/Programs/ezusb.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -24,7 +24,7 @@
 #include "ezusb.h"
 #include "ihex.h"
 #include "timing.h"
-#include "core.h"
+#include "options.h"
 
 #define EZUSB_REQUEST_TIMEOUT 1000
 #define EZUSB_CPUCS_DELAY 10
diff --git a/Programs/file.c b/Programs/file.c
index 7c47a2fb3..fb90854ac 100644
--- a/Programs/file.c
+++ b/Programs/file.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -45,6 +45,7 @@
 #endif /* HAVE_TERMIOS_H */
 
 #include "parameters.h"
+#include "options.h"
 #include "log.h"
 #include "strfmt.h"
 #include "file.h"
@@ -210,6 +211,36 @@ makePath (const char *directory, const char *file) {
   return joinPath(components, ARRAY_COUNT(components));
 }
 
+int
+anchorRelativePath (char **path, const char *anchor) {
+  int ok = 0;
+  char *newPath = makePath(anchor, *path);
+
+  if (newPath) {
+    if (changeStringSetting(path, newPath)) ok = 1;
+    free(newPath);
+  }
+
+  return ok;
+}
+
+char *opt_helpersDirectory = HELPERS_DIRECTORY;
+
+char *
+makeHelperPath (const char *name) {
+  char *path = NULL;
+  char *directory = NULL;
+
+  if (changeStringSetting(&directory, opt_helpersDirectory)) {
+    if (toAbsoluteInstallPath(&directory)) {
+      path = makePath(directory, name);
+    }
+  }
+
+  if (directory) free(directory);
+  return path;
+}
+
 int
 hasFileExtension (const char *path, const char *extension) {
   const char *tail = locatePathExtension(path);
@@ -484,13 +515,8 @@ ensurePathDirectory (const char *path) {
   }
 }
 
-static void
-setDirectory (const char **variable, const char *directory) {
-  *variable = directory;
-}
-
 static const char *
-getDirectory (const char *const *variable) {
+getDirectory (char *const *variable) {
   if (*variable && **variable) {
     if (ensureDirectory(*variable, 0)) {
       return *variable;
@@ -501,44 +527,34 @@ getDirectory (const char *const *variable) {
 }
 
 static char *
-makeDirectoryPath (const char *const *variable, const char *file) {
+makeDirectoryPath (char *const *variable, const char *file) {
   const char *directory = getDirectory(variable);
   if (directory) return makePath(directory, file);
   return NULL;
 }
 
-static const char *updatableDirectory = NULL;
-
-void
-setUpdatableDirectory (const char *directory) {
-  setDirectory(&updatableDirectory, directory);
-}
+char *opt_updatableDirectory = UPDATABLE_DIRECTORY;
 
 const char *
 getUpdatableDirectory (void) {
-  return getDirectory(&updatableDirectory);
+  return getDirectory(&opt_updatableDirectory);
 }
 
 char *
 makeUpdatablePath (const char *file) {
-  return makeDirectoryPath(&updatableDirectory, file);
+  return makeDirectoryPath(&opt_updatableDirectory, file);
 }
 
-static const char *writableDirectory = NULL;
-
-void
-setWritableDirectory (const char *directory) {
-  setDirectory(&writableDirectory, directory);
-}
+char *opt_writableDirectory = WRITABLE_DIRECTORY;
 
 const char *
 getWritableDirectory (void) {
-  return getDirectory(&writableDirectory);
+  return getDirectory(&opt_writableDirectory);
 }
 
 char *
 makeWritablePath (const char *file) {
-  return makeDirectoryPath(&writableDirectory, file);
+  return makeDirectoryPath(&opt_writableDirectory, file);
 }
 
 char *
diff --git a/Programs/fm_adlib.c b/Programs/fm_adlib.c
index 3ad672193..2d0949d0c 100644
--- a/Programs/fm_adlib.c
+++ b/Programs/fm_adlib.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/fm_none.c b/Programs/fm_none.c
index e1648ac41..7e60c412d 100644
--- a/Programs/fm_none.c
+++ b/Programs/fm_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/gio.c b/Programs/gio.c
index 9be76cbb3..640b1a40a 100644
--- a/Programs/gio.c
+++ b/Programs/gio.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/gio_bluetooth.c b/Programs/gio_bluetooth.c
index 2e2909072..ff6ec6bb7 100644
--- a/Programs/gio_bluetooth.c
+++ b/Programs/gio_bluetooth.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/gio_hid.c b/Programs/gio_hid.c
index bd5ab7c81..0c8df7470 100644
--- a/Programs/gio_hid.c
+++ b/Programs/gio_hid.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/gio_internal.h b/Programs/gio_internal.h
index 03165274b..41ebfa67e 100644
--- a/Programs/gio_internal.h
+++ b/Programs/gio_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/gio_null.c b/Programs/gio_null.c
index f4515ed6d..9581d8c0e 100644
--- a/Programs/gio_null.c
+++ b/Programs/gio_null.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/gio_serial.c b/Programs/gio_serial.c
index 788dddeeb..2ee324f9a 100644
--- a/Programs/gio_serial.c
+++ b/Programs/gio_serial.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/gio_usb.c b/Programs/gio_usb.c
index f66e34cfd..6b20e3ab1 100644
--- a/Programs/gio_usb.c
+++ b/Programs/gio_usb.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hid.c b/Programs/hid.c
index 79fe0529a..87f589fce 100644
--- a/Programs/hid.c
+++ b/Programs/hid.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hid_braille.c b/Programs/hid_braille.c
index 20b9db529..f8ef18ba7 100644
--- a/Programs/hid_braille.c
+++ b/Programs/hid_braille.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hid_inspect.c b/Programs/hid_inspect.c
index 4b92fdcc5..51aac847d 100644
--- a/Programs/hid_inspect.c
+++ b/Programs/hid_inspect.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hid_internal.h b/Programs/hid_internal.h
index e275f7b3f..749112329 100644
--- a/Programs/hid_internal.h
+++ b/Programs/hid_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hid_items.c b/Programs/hid_items.c
index 362aa3365..0d6e4852b 100644
--- a/Programs/hid_items.c
+++ b/Programs/hid_items.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hid_linux.c b/Programs/hid_linux.c
index f075589c8..2e2149eed 100644
--- a/Programs/hid_linux.c
+++ b/Programs/hid_linux.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hid_none.c b/Programs/hid_none.c
index 057f312c2..8358f8f9d 100644
--- a/Programs/hid_none.c
+++ b/Programs/hid_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hid_tables.c b/Programs/hid_tables.c
index d57575447..6513e18da 100644
--- a/Programs/hid_tables.c
+++ b/Programs/hid_tables.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hidkeys.c b/Programs/hidkeys.c
index d6a00a845..dd6c6c0d4 100644
--- a/Programs/hidkeys.c
+++ b/Programs/hidkeys.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hidkeys.h b/Programs/hidkeys.h
index af84e9c23..19869aeb8 100644
--- a/Programs/hidkeys.h
+++ b/Programs/hidkeys.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hostcmd.c b/Programs/hostcmd.c
index 357e85167..8dbd09595 100644
--- a/Programs/hostcmd.c
+++ b/Programs/hostcmd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hostcmd_internal.h b/Programs/hostcmd_internal.h
index 0bdcd6396..b04ae91b3 100644
--- a/Programs/hostcmd_internal.h
+++ b/Programs/hostcmd_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hostcmd_none.c b/Programs/hostcmd_none.c
index 546035fd3..d20810e95 100644
--- a/Programs/hostcmd_none.c
+++ b/Programs/hostcmd_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hostcmd_none.h b/Programs/hostcmd_none.h
index 77f613dbd..dd79d7d34 100644
--- a/Programs/hostcmd_none.h
+++ b/Programs/hostcmd_none.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hostcmd_unix.c b/Programs/hostcmd_unix.c
index 76f1e5f90..bc33c5a89 100644
--- a/Programs/hostcmd_unix.c
+++ b/Programs/hostcmd_unix.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hostcmd_unix.h b/Programs/hostcmd_unix.h
index 73f2b8b98..516f6fd21 100644
--- a/Programs/hostcmd_unix.h
+++ b/Programs/hostcmd_unix.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hostcmd_windows.c b/Programs/hostcmd_windows.c
index b9c61c056..1ada34574 100644
--- a/Programs/hostcmd_windows.c
+++ b/Programs/hostcmd_windows.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/hostcmd_windows.h b/Programs/hostcmd_windows.h
index 5a9416221..3f7962d89 100644
--- a/Programs/hostcmd_windows.h
+++ b/Programs/hostcmd_windows.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ihex.c b/Programs/ihex.c
index 8f6c455fc..085e3a16e 100644
--- a/Programs/ihex.c
+++ b/Programs/ihex.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/io_log.c b/Programs/io_log.c
index 97ee22e10..5dc72006e 100644
--- a/Programs/io_log.c
+++ b/Programs/io_log.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/io_log.h b/Programs/io_log.h
index 621a25f69..ed9f03fa3 100644
--- a/Programs/io_log.h
+++ b/Programs/io_log.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/io_misc.c b/Programs/io_misc.c
index 108e484cf..ecdd6f9e9 100644
--- a/Programs/io_misc.c
+++ b/Programs/io_misc.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/kbd.c b/Programs/kbd.c
index abe44be8b..47a5b14c1 100644
--- a/Programs/kbd.c
+++ b/Programs/kbd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/kbd.h b/Programs/kbd.h
index edd9be662..8429d99e3 100644
--- a/Programs/kbd.h
+++ b/Programs/kbd.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/kbd_android.c b/Programs/kbd_android.c
index 2ab9fda95..04d7aa090 100644
--- a/Programs/kbd_android.c
+++ b/Programs/kbd_android.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/kbd_android.h b/Programs/kbd_android.h
index 048075e4a..baa987771 100644
--- a/Programs/kbd_android.h
+++ b/Programs/kbd_android.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/kbd_internal.h b/Programs/kbd_internal.h
index 69ede2a51..e129dcd39 100644
--- a/Programs/kbd_internal.h
+++ b/Programs/kbd_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/kbd_keycodes.c b/Programs/kbd_keycodes.c
index a488777f8..cf79a0aa1 100644
--- a/Programs/kbd_keycodes.c
+++ b/Programs/kbd_keycodes.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/kbd_linux.c b/Programs/kbd_linux.c
index 024b56768..0c4920384 100644
--- a/Programs/kbd_linux.c
+++ b/Programs/kbd_linux.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/kbd_none.c b/Programs/kbd_none.c
index 721d6cb5a..dce25ee63 100644
--- a/Programs/kbd_none.c
+++ b/Programs/kbd_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ktb_audit.c b/Programs/ktb_audit.c
index 100156d6d..c398e6ddc 100644
--- a/Programs/ktb_audit.c
+++ b/Programs/ktb_audit.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ktb_cmds.c b/Programs/ktb_cmds.c
index 10f52bb3a..be89b2763 100644
--- a/Programs/ktb_cmds.c
+++ b/Programs/ktb_cmds.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -111,7 +111,9 @@ static const CommandListEntry commandList_clipboard[] = {
   { .code = BRL_CMD_BLK(CLIP_COPY) },
   { .code = BRL_CMD_BLK(CLIP_APPEND) },
   { .code = BRL_CMD_PASTE },
+  { .code = BRL_CMD_PASTE_ALTMODE },
   { .code = BRL_CMD_BLK(PASTE_HISTORY) },
+  { .code = BRL_CMD_BLK(PASTE_HISTORY_ALTMODE) },
   { .code = BRL_CMD_PRSEARCH },
   { .code = BRL_CMD_NXSEARCH },
   { .code = BRL_CMD_CLIP_SAVE },
@@ -179,6 +181,7 @@ static const CommandListEntry commandList_say[] = {
   { .code = BRL_CMD_SAY_FASTER },
   { .code = BRL_CMD_SAY_LOWER },
   { .code = BRL_CMD_SAY_HIGHER },
+  { .code = BRL_CMD_SPK_PUNCT_LEVEL },
   { .code = BRL_CMD_AUTOSPEAK },
   { .code = BRL_CMD_ASPK_SEL_LINE },
   { .code = BRL_CMD_ASPK_EMP_LINE },
diff --git a/Programs/ktb_cmds.h b/Programs/ktb_cmds.h
index 8e3198a51..98e385623 100644
--- a/Programs/ktb_cmds.h
+++ b/Programs/ktb_cmds.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ktb_compile.c b/Programs/ktb_compile.c
index 54f31448d..cbcbf1b93 100644
--- a/Programs/ktb_compile.c
+++ b/Programs/ktb_compile.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ktb_inspect.h b/Programs/ktb_inspect.h
index f390fbb48..98e7fea43 100644
--- a/Programs/ktb_inspect.h
+++ b/Programs/ktb_inspect.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ktb_internal.h b/Programs/ktb_internal.h
index 3ab71c6e9..d7ecd025d 100644
--- a/Programs/ktb_internal.h
+++ b/Programs/ktb_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -162,6 +162,7 @@ struct KeyTableStruct {
 
   struct {
     int command;
+    unsigned char force:1;
   } release;
 
   struct {
diff --git a/Programs/ktb_keyboard.c b/Programs/ktb_keyboard.c
index 6dc6fdc23..c00380bd9 100644
--- a/Programs/ktb_keyboard.c
+++ b/Programs/ktb_keyboard.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ktb_keyboard.h b/Programs/ktb_keyboard.h
index fe225feaf..bc1a0b20c 100644
--- a/Programs/ktb_keyboard.h
+++ b/Programs/ktb_keyboard.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ktb_list.c b/Programs/ktb_list.c
index 312867840..b69341191 100644
--- a/Programs/ktb_list.c
+++ b/Programs/ktb_list.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ktb_list.h b/Programs/ktb_list.h
index 8fda56f95..00422d6f8 100644
--- a/Programs/ktb_list.h
+++ b/Programs/ktb_list.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ktb_translate.c b/Programs/ktb_translate.c
index 096e259b0..7764fc5ea 100644
--- a/Programs/ktb_translate.c
+++ b/Programs/ktb_translate.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -487,6 +487,8 @@ ASYNC_ALARM_CALLBACK(handleLongPressAlarm) {
   }
 
   table->release.command = BRL_CMD_NOOP;
+  table->release.force = 0;
+
   processCommand(table, command);
 }
 
@@ -684,6 +686,7 @@ processKeyEvent (
 
         resetLongPressData(table);
         table->release.command = BRL_CMD_NOOP;
+        table->release.force = 0;
 
         if (binding) {
           addCommandArguments(table, &command, binding->primaryCommand.entry, binding);
@@ -692,35 +695,35 @@ processKeyEvent (
           addCommandArguments(table, &secondaryCommand, binding->secondaryCommand.entry, binding);
         }
 
-        if (context == KTB_CTX_WAITING) {
-          table->release.command = BRL_CMD_NOOP;
-        } else {
-          if (secondaryCommand == BRL_CMD_NOOP) {
-            if (isRepeatableCommand(command)) {
-              secondaryCommand = command;
-            }
+        if (secondaryCommand == BRL_CMD_NOOP) {
+          if (isRepeatableCommand(command)) {
+            secondaryCommand = command;
           }
+        }
 
-          if (isImmediate) {
-            table->release.command = BRL_CMD_NOOP;
-          } else {
-            table->release.command = command;
-            command = BRL_CMD_NOOP;
-          }
+        if (isImmediate) {
+          table->release.command = BRL_CMD_NOOP;
+        } else {
+          table->release.command = command;
+          command = BRL_CMD_NOOP;
+        }
 
-          if (secondaryCommand != BRL_CMD_NOOP) {
-            table->longPress.command = secondaryCommand;
-            table->longPress.repeat = isRepeatableCommand(secondaryCommand);
+        if (secondaryCommand != BRL_CMD_NOOP) {
+          table->longPress.command = secondaryCommand;
+          table->longPress.repeat = isRepeatableCommand(secondaryCommand);
 
-            table->longPress.keyAction = "long";
-            table->longPress.keyContext = context;
-            table->longPress.keyValue = keyValue;
+          table->longPress.keyAction = "long";
+          table->longPress.keyContext = context;
+          table->longPress.keyValue = keyValue;
 
-            setLongPressAlarm(table, prefs.longPressTime);
-          }
+          setLongPressAlarm(table, prefs.longPressTime);
         }
 
-        processCommand(table, command);
+        if (command != BRL_CMD_NOOP) {
+          processCommand(table, command);
+        } else if (context == KTB_CTX_WAITING) {
+          table->release.force = 1;
+        }
       }
     } else {
       resetLongPressData(table);
@@ -728,9 +731,10 @@ processKeyEvent (
       if (prefs.onFirstRelease || (table->pressedKeys.count == 0)) {
         int *cmd = &table->release.command;
 
-        if (*cmd != BRL_CMD_NOOP) {
+        if ((*cmd != BRL_CMD_NOOP) || table->release.force) {
           processCommand(table, (command = *cmd));
           *cmd = BRL_CMD_NOOP;
+          table->release.force = 0;
         }
       }
     }
diff --git a/Programs/learn.c b/Programs/learn.c
index 21ea0e7dc..dc78e9b50 100644
--- a/Programs/learn.c
+++ b/Programs/learn.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -18,12 +18,16 @@
 
 #include "prologue.h"
 
+#include <stdio.h>
 #include <string.h>
 
 #include "log.h"
 #include "learn.h"
 #include "message.h"
+#include "async_handle.h"
 #include "async_wait.h"
+#include "async_alarm.h"
+#include "timing_types.h"
 #include "cmd.h"
 #include "cmd_queue.h"
 #include "brl.h"
@@ -40,17 +44,70 @@ typedef enum {
 typedef struct {
   const char *mode;
   LearnModeState state;
+
+  struct {
+    const char *text;
+    AsyncHandle alarm;
+
+    struct {
+      int initial;
+      int left;
+    } seconds;
+  } prompt;
 } LearnModeData;
 
-ASYNC_CONDITION_TESTER(testEndLearnWait) {
-  LearnModeData *lmd = data;
+static int
+showText (const char *text, MessageOptions options, LearnModeData *lmd) {
+  return message(lmd->mode, text, (options | MSG_SYNC));
+}
 
-  return lmd->state != LMS_TIMEOUT;
+ASYNC_ALARM_CALLBACK(updateLearnModePrompt) {
+  LearnModeData *lmd = parameters->data;
+  int *secondsLeft = &lmd->prompt.seconds.left;
+
+  {
+    char prompt[0X100];
+    snprintf(prompt, sizeof(prompt), "%s - %d", lmd->prompt.text, *secondsLeft);
+    showText(prompt, (MSG_NODELAY | MSG_SILENT), lmd);
+  }
+
+  *secondsLeft -= 1;
+}
+
+static void
+endPrompt (LearnModeData *lmd) {
+  AsyncHandle *alarm = &lmd->prompt.alarm;
+
+  if (*alarm) {
+    asyncCancelRequest(*alarm);
+    *alarm = NULL;
+  }
+}
+
+static int
+beginPrompt (LearnModeData *lmd) {
+  endPrompt(lmd);
+  AsyncHandle *alarm = &lmd->prompt.alarm;
+
+  lmd->prompt.seconds.left = lmd->prompt.seconds.initial;
+
+  if (asyncNewRelativeAlarm(alarm, 0, updateLearnModePrompt, lmd)) {
+    if (asyncResetAlarmInterval(*alarm, MSECS_PER_SEC)) {
+      sayMessage(lmd->prompt.text);
+      return 1;
+    }
+
+    asyncCancelRequest(*alarm);
+    *alarm = NULL;
+  }
+
+  return 0;
 }
 
 static int
 handleLearnModeCommands (int command, void *data) {
   LearnModeData *lmd = data;
+  endPrompt(lmd);
 
   logMessage(LOG_DEBUG, "learn: command=%06X", command);
   lmd->state = LMS_CONTINUE;
@@ -63,7 +120,7 @@ handleLearnModeCommands (int command, void *data) {
     case BRL_CMD_NOOP:
       return 1;
 
-    default:
+    default: {
       switch (command & BRL_MSK_BLK) {
         case BRL_CMD_BLK(TOUCH_AT):
           return 1;
@@ -71,26 +128,43 @@ handleLearnModeCommands (int command, void *data) {
         default:
           break;
       }
+
       break;
+    }
   }
 
   {
-    char buffer[0X100];
+    char description[0X100];
 
-    describeCommand(buffer, sizeof(buffer), command,
-                    (CDO_IncludeName | CDO_IncludeOperand));
+    describeCommand(
+      description, sizeof(description), command,
+      (CDO_IncludeName | CDO_IncludeOperand)
+    );
 
-    logMessage(LOG_DEBUG, "learn: %s", buffer);
-    if (!message(lmd->mode, buffer, MSG_SYNC|MSG_NODELAY)) lmd->state = LMS_ERROR;
+    logMessage(LOG_DEBUG, "learn: %s", description);
+    if (!showText(description, 0, lmd)) lmd->state = LMS_ERROR;
   }
 
+  if (!beginPrompt(lmd)) lmd->state = LMS_ERROR;
   return 1;
 }
 
+ASYNC_CONDITION_TESTER(testEndLearnWait) {
+  LearnModeData *lmd = data;
+
+  return lmd->state != LMS_TIMEOUT;
+}
+
 int
 learnMode (int timeout) {
   LearnModeData lmd = {
-    .mode = "lrn"
+    .mode = "lrn",
+
+    .prompt = {
+      .text = gettext("Learn Mode"),
+      .alarm = NULL,
+      .seconds.initial = timeout / MSECS_PER_SEC,
+    },
   };
 
   pushCommandEnvironment("learnMode", NULL, NULL);
@@ -98,14 +172,16 @@ learnMode (int timeout) {
                      handleLearnModeCommands, NULL, &lmd);
 
   if (setStatusText(&brl, lmd.mode)) {
-    if (message(lmd.mode, gettext("Learn Mode"), MSG_SYNC|MSG_NODELAY)) {
+    if (beginPrompt(&lmd)) {
       do {
         lmd.state = LMS_TIMEOUT;
         if (!asyncAwaitCondition(timeout, testEndLearnWait, &lmd)) break;
       } while (lmd.state == LMS_CONTINUE);
 
+      endPrompt(&lmd);
+
       if (lmd.state == LMS_TIMEOUT) {
-        if (!message(lmd.mode, gettext("done"), MSG_SYNC)) {
+        if (!showText(gettext("done"), 0, &lmd)) {
           lmd.state = LMS_ERROR;
         }
       }
diff --git a/Programs/learn.h b/Programs/learn.h
index 8a25ebd27..0dba5dd21 100644
--- a/Programs/learn.h
+++ b/Programs/learn.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/leds.c b/Programs/leds.c
index 2c48ce0c1..9e235fd88 100644
--- a/Programs/leds.c
+++ b/Programs/leds.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/leds_linux.c b/Programs/leds_linux.c
index f793530cc..829902826 100644
--- a/Programs/leds_linux.c
+++ b/Programs/leds_linux.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/leds_none.c b/Programs/leds_none.c
index 1a58afffe..fd5981dff 100644
--- a/Programs/leds_none.c
+++ b/Programs/leds_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/lock.c b/Programs/lock.c
index 156466acd..3438c14fe 100644
--- a/Programs/lock.c
+++ b/Programs/lock.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/log.c b/Programs/log.c
index 57e84cca1..a77bee68f 100644
--- a/Programs/log.c
+++ b/Programs/log.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/log_history.c b/Programs/log_history.c
index b676c37f8..90594262f 100644
--- a/Programs/log_history.c
+++ b/Programs/log_history.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/menu.c b/Programs/menu.c
index a1a91ec35..6fe5b5e77 100644
--- a/Programs/menu.c
+++ b/Programs/menu.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -50,6 +50,11 @@
 #include "parse.h"
 #include "file.h"
 
+typedef struct {
+  const char *unit;
+  NumericMenuItemFormatter *formatter;
+} NumericData;
+
 typedef struct {
   char *directory;
   const char *extension;
@@ -71,6 +76,10 @@ typedef struct {
   char *pathsArea[3];
 } FileData;
 
+typedef struct {
+  MenuToolFunction *function;
+} ToolData;
+
 typedef struct {
   Menu *menu;
   unsigned opened:1;
@@ -122,19 +131,14 @@ struct MenuItemStruct {
   unsigned char step;                  /* present only multiples of this value */
 
   union {
-    const char *text;
+    NumericData numeric;
     const MenuString *strings;
     FileData *files;
+    ToolData tool;
+    const char *text;
+    char *const *stringOption;
+    int *flagOption;
     SubmenuData *submenu;
-
-    struct {
-      const char *unit;
-      NumericMenuItemFormatter *formatter;
-    } numeric;
-
-    struct {
-      MenuToolFunction *function;
-    } tool;
   } data;
 };
 
@@ -355,27 +359,6 @@ setMenuItemChanged (MenuItem *item, MenuItemChanged *handler) {
   item->changed = handler;
 }
 
-static const char *
-getValue_text (const MenuItem *item) {
-  return item->data.text;
-}
-
-static const MenuItemMethods menuItemMethods_text = {
-  .getValue = getValue_text
-};
-
-MenuItem *
-newTextMenuItem (Menu *menu, const MenuString *name, const char *text) {
-  MenuItem *item = newMenuItem(menu, NULL, name);
-
-  if (item) {
-    item->methods = &menuItemMethods_text;
-    item->data.text = text;
-  }
-
-  return item;
-}
-
 static const char *
 getValue_numeric (const MenuItem *item) {
   Menu *menu = item->menu;
@@ -517,14 +500,14 @@ newStringsMenuItem (
   return item;
 }
 
+static const MenuString booleanStrings[] = {
+  {.label=strtext("No")},
+  {.label=strtext("Yes")}
+};
+
 MenuItem *
 newBooleanMenuItem (Menu *menu, unsigned char *setting, const MenuString *name) {
-  static const MenuString strings[] = {
-    {.label=strtext("No")},
-    {.label=strtext("Yes")}
-  };
-
-  return newEnumeratedMenuItem(menu, setting, name, strings);
+  return newEnumeratedMenuItem(menu, setting, name, booleanStrings);
 }
 
 static int
@@ -806,6 +789,75 @@ newToolMenuItem (Menu *menu, const MenuString *name, MenuToolFunction *function)
   return item;
 }
 
+static const char *
+getValue_text (const MenuItem *item) {
+  return item->data.text;
+}
+
+static const MenuItemMethods menuItemMethods_text = {
+  .getValue = getValue_text
+};
+
+MenuItem *
+newTextMenuItem (Menu *menu, const MenuString *name, const char *text) {
+  MenuItem *item = newMenuItem(menu, NULL, name);
+
+  if (item) {
+    item->methods = &menuItemMethods_text;
+    item->data.text = text;
+  }
+
+  return item;
+}
+
+static const char *
+getValue_stringOption (const MenuItem *item) {
+  const char *value = *item->data.stringOption;
+  if (!*value) value = gettext("not set");
+  return value;
+}
+
+static const MenuItemMethods menuItemMethods_stringOption = {
+  .getValue = getValue_stringOption
+};
+
+MenuItem *
+newStringOptionMenuItem (Menu *menu, const MenuString *name, char *const *option) {
+  MenuItem *item = newMenuItem(menu, NULL, name);
+
+  if (item) {
+    item->methods = &menuItemMethods_stringOption;
+    item->data.stringOption = option;
+  }
+
+  return item;
+}
+
+static const char *
+getValue_flagOption (const MenuItem *item) {
+  return gettext(
+           *item->data.flagOption?
+           booleanStrings[1].label:
+           booleanStrings[0].label
+         );
+}
+
+static const MenuItemMethods menuItemMethods_flagOption = {
+  .getValue = getValue_flagOption
+};
+
+MenuItem *
+newFlagOptionMenuItem (Menu *menu, const MenuString *name, int *option) {
+  MenuItem *item = newMenuItem(menu, NULL, name);
+
+  if (item) {
+    item->methods = &menuItemMethods_flagOption;
+    item->data.flagOption = option;
+  }
+
+  return item;
+}
+
 static MenuItem *
 getParentMenuItem (const MenuItem *item) {
   return getSelectedMenuItem(item->menu->parent);
diff --git a/Programs/menu_prefs.c b/Programs/menu_prefs.c
index f5c24a7b2..5836418b8 100644
--- a/Programs/menu_prefs.c
+++ b/Programs/menu_prefs.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -29,6 +29,7 @@
 #include "menu.h"
 #include "menu_prefs.h"
 #include "prefs.h"
+#include "file.h"
 #include "profile.h"
 #include "status_types.h"
 #include "blink.h"
@@ -36,13 +37,14 @@
 #include "brl.h"
 #include "spk.h"
 #include "ttb.h"
-#include "atb.h"
 #include "ctb.h"
+#include "atb.h"
 #include "ktb.h"
 #include "tune.h"
 #include "bell.h"
 #include "leds.h"
 #include "midi.h"
+#include "options.h"
 #include "core.h"
 
 #define PREFS_MENU_ITEM_VARIABLE(name) prefsMenuItemVariable_##name
@@ -677,21 +679,21 @@ makePreferencesMenu (void) {
   }
 
   {
-    SUBMENU(optionsSubmenu, rootMenu, strtext("Menu Options"));
+    SUBMENU(menuSubmenu, rootMenu, strtext("Menu Options"));
 
     {
       NAME(strtext("Show Submenu Sizes"));
-      ITEM(newBooleanMenuItem(optionsSubmenu, &prefs.showSubmenuSizes, &itemName));
+      ITEM(newBooleanMenuItem(menuSubmenu, &prefs.showSubmenuSizes, &itemName));
     }
 
     {
       NAME(strtext("Show Advanced Submenus"));
-      ITEM(newBooleanMenuItem(optionsSubmenu, &prefs.showAdvancedSubmenus, &itemName));
+      ITEM(newBooleanMenuItem(menuSubmenu, &prefs.showAdvancedSubmenus, &itemName));
     }
 
     {
       NAME(strtext("Show All Items"));
-      ITEM(newBooleanMenuItem(optionsSubmenu, &prefs.showAllItems, &itemName));
+      ITEM(newBooleanMenuItem(menuSubmenu, &prefs.showAllItems, &itemName));
     }
   }
 
@@ -1001,6 +1003,11 @@ makePreferencesMenu (void) {
       TEST(AutorepeatEnabled);
     }
 
+    {
+      NAME(strtext("Alternate Paste Mode Enabled"));
+      ITEM(newBooleanMenuItem(inputSubmenu, &prefs.alternatePasteModeEnabled, &itemName));
+    }
+
     {
       NAME(strtext("Touch Navigation"));
       ITEM(newBooleanMenuItem(inputSubmenu, &prefs.touchNavigation, &itemName));
@@ -1208,11 +1215,11 @@ makePreferencesMenu (void) {
     }
 
     {
-      static const MenuString strings[] = {
-        [SPK_PUNCTUATION_NONE] = {.label=strtext("None")},
-        [SPK_PUNCTUATION_SOME] = {.label=strtext("Some")},
-        [SPK_PUNCTUATION_ALL] = {.label=strtext("All")},
-      };
+      static MenuString strings[SPK_PUNCTUATION_ALL + 1];
+      strings[SPK_PUNCTUATION_NONE].label = getSpeechPunctuation(SPK_PUNCTUATION_NONE);
+      strings[SPK_PUNCTUATION_SOME].label = getSpeechPunctuation(SPK_PUNCTUATION_SOME);
+      strings[SPK_PUNCTUATION_MOST].label = getSpeechPunctuation(SPK_PUNCTUATION_MOST);
+      strings[SPK_PUNCTUATION_ALL].label = getSpeechPunctuation(SPK_PUNCTUATION_ALL);
 
       NAME(strtext("Speech Punctuation"));
       ITEM(newEnumeratedMenuItem(speechSubmenu, &prefs.speechPunctuation, &itemName, strings));
@@ -1440,6 +1447,28 @@ makePreferencesMenu (void) {
     }
   }
 
+  {
+    SUBMENU(toolsSubmenu, rootMenu, strtext("Tools"));
+    setAdvancedSubmenu(toolsSubmenu);
+
+    {
+      NAME(strtext("Restart Braille Driver"));
+      ITEM(newToolMenuItem(toolsSubmenu, &itemName, restartBrailleDriver));
+    }
+
+  #ifdef ENABLE_SPEECH_SUPPORT
+    {
+      NAME(strtext("Restart Speech Driver"));
+      ITEM(newToolMenuItem(toolsSubmenu, &itemName, restartSpeechDriver));
+    }
+  #endif /* ENABLE_SPEECH_SUPPORT */
+
+    {
+      NAME(strtext("Restart Screen Driver"));
+      ITEM(newToolMenuItem(toolsSubmenu, &itemName, restartScreenDriver));
+    }
+  }
+
   {
     SUBMENU(buildSubmenu, rootMenu, strtext("Build Information"));
     setAdvancedSubmenu(buildSubmenu);
@@ -1464,14 +1493,34 @@ makePreferencesMenu (void) {
       ITEM(newTextMenuItem(buildSubmenu, &itemName, PACKAGE_BUGREPORT));
     }
 
+    {
+      NAME(strtext("Configuration File"));
+      ITEM(newTextMenuItem(buildSubmenu, &itemName, CONFIGURATION_FILE));
+    }
+
+    {
+      NAME(strtext("Preferences File"));
+      ITEM(newTextMenuItem(buildSubmenu, &itemName, PREFERENCES_FILE));
+    }
+
     {
       NAME(strtext("Configuration Directory"));
       ITEM(newTextMenuItem(buildSubmenu, &itemName, CONFIGURATION_DIRECTORY));
     }
 
     {
-      NAME(strtext("Configuration File"));
-      ITEM(newTextMenuItem(buildSubmenu, &itemName, CONFIGURATION_FILE));
+      NAME(strtext("Tables Directory"));
+      ITEM(newTextMenuItem(buildSubmenu, &itemName, TABLES_DIRECTORY));
+    }
+
+    {
+      NAME(strtext("Drivers Directory"));
+      ITEM(newTextMenuItem(buildSubmenu, &itemName, DRIVERS_DIRECTORY));
+    }
+
+    {
+      NAME(strtext("Helpers Directory"));
+      ITEM(newTextMenuItem(buildSubmenu, &itemName, HELPERS_DIRECTORY));
     }
 
     {
@@ -1479,34 +1528,254 @@ makePreferencesMenu (void) {
       ITEM(newTextMenuItem(buildSubmenu, &itemName, UPDATABLE_DIRECTORY));
     }
 
+    {
+      NAME(strtext("Writable Directory"));
+      ITEM(newTextMenuItem(buildSubmenu, &itemName, WRITABLE_DIRECTORY));
+    }
+
+    {
+      NAME(strtext("Locale Directory"));
+      ITEM(newTextMenuItem(buildSubmenu, &itemName, LOCALE_DIRECTORY));
+    }
+  }
+
+  {
+    SUBMENU(optionsSubmenu, rootMenu, strtext("Command Options"));
+    setAdvancedSubmenu(optionsSubmenu);
+
+    {
+      NAME(strtext("Configuration File"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_configurationFile));
+    }
+
+    {
+      NAME(strtext("Environment Variables"));
+      ITEM(newFlagOptionMenuItem(optionsSubmenu, &itemName, &opt_environmentVariables));
+    }
+
+    {
+      NAME(strtext("Boot Parameters"));
+      ITEM(newFlagOptionMenuItem(optionsSubmenu, &itemName, &opt_bootParameters));
+    }
+
     {
       NAME(strtext("Preferences File"));
-      ITEM(newTextMenuItem(buildSubmenu, &itemName, PREFERENCES_FILE));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_preferencesFile));
     }
 
     {
-      NAME(strtext("Writable Directory"));
-      ITEM(newTextMenuItem(buildSubmenu, &itemName, WRITABLE_DIRECTORY));
+      NAME(strtext("Override Preferences"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_overridePreferences));
+    }
+
+    {
+      NAME(strtext("Tables Directory"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_tablesDirectory));
     }
 
     {
       NAME(strtext("Drivers Directory"));
-      ITEM(newTextMenuItem(buildSubmenu, &itemName, DRIVERS_DIRECTORY));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_driversDirectory));
     }
 
     {
-      NAME(strtext("Tables Directory"));
-      ITEM(newTextMenuItem(buildSubmenu, &itemName, TABLES_DIRECTORY));
+      NAME(strtext("Helpers Directory"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_helpersDirectory));
+    }
+
+    {
+      NAME(strtext("Updatable Directory"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_updatableDirectory));
+    }
+
+    {
+      NAME(strtext("Writable Directory"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_writableDirectory));
     }
 
     {
       NAME(strtext("Locale Directory"));
-      ITEM(newTextMenuItem(buildSubmenu, &itemName, LOCALE_DIRECTORY));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_localeDirectory));
+    }
+
+    {
+      const char *const *directories = getAllOverrideDirectories();
+
+      if (directories) {
+        const char *const *directory = directories;
+        NAME(strtext("Override Directory"));
+
+        while (*directory) {
+          ITEM(newTextMenuItem(optionsSubmenu, &itemName, *directory));
+          directory += 1;
+        }
+      }
+    }
+     
+    {
+      NAME(strtext("Text Table"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_textTable));
+    }
+
+    {
+      NAME(strtext("Contraction Table"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_contractionTable));
     }
+
+    {
+      NAME(strtext("Attributes Table"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_attributesTable));
+    }
+
+    {
+      NAME(strtext("Keyboard Table"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_keyboardTable));
+    }
+
+    {
+      NAME(strtext("Keyboard Properties"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_keyboardProperties));
+    }
+
+    {
+      NAME(strtext("GUI Keyboard Enabled"));
+      ITEM(newFlagOptionMenuItem(optionsSubmenu, &itemName, &opt_guiKeyboardEnabled));
+    }
+
+    {
+      NAME(strtext("GUI Keyboard Table"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_guiKeyboardTable));
+    }
+
+    {
+      NAME(strtext("Braille Driver"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_brailleDriver));
+    }
+
+    {
+      NAME(strtext("Braille Parameters"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_brailleParameters));
+    }
+
+    {
+      NAME(strtext("Braille Device"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_brailleDevice));
+    }
+
+    {
+      NAME(strtext("Release Device"));
+      ITEM(newFlagOptionMenuItem(optionsSubmenu, &itemName, &opt_releaseDevice));
+    }
+
+#ifdef ENABLE_SPEECH_SUPPORT
+    {
+      NAME(strtext("Speech Driver"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_speechDriver));
+    }
+
+    {
+      NAME(strtext("Speech Parameters"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_speechParameters));
+    }
+
+    {
+      NAME(strtext("Quiet If No Braille"));
+      ITEM(newFlagOptionMenuItem(optionsSubmenu, &itemName, &opt_quietIfNoBraille));
+    }
+
+    {
+      NAME(strtext("Speech Input"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_speechInput));
+    }
+#endif /* ENABLE_SPEECH_SUPPORT */
+
+    {
+      NAME(strtext("Screen Driver"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_screenDriver));
+    }
+
+    {
+      NAME(strtext("Screen Parameters"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_screenParameters));
+    }
+
+#ifdef HAVE_PCM_SUPPORT
+    {
+      NAME(strtext("PCM Device"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_pcmDevice));
+    }
+#endif /* HAVE_PCM_SUPPORT */
+
+#ifdef HAVE_MIDI_SUPPORT
+    {
+      NAME(strtext("MIDI Device"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_midiDevice));
+    }
+#endif /* HAVE_MIDI_SUPPORT */
+
+    {
+      NAME(strtext("Log File"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_logFile));
+    }
+
+    {
+      NAME(strtext("Log to Standard Error"));
+      ITEM(newFlagOptionMenuItem(optionsSubmenu, &itemName, &opt_logToStandardError));
+    }
+
+    {
+      NAME(strtext("PID File"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_pidFile));
+    }
+
+    {
+      NAME(strtext("No Daemon"));
+      ITEM(newFlagOptionMenuItem(optionsSubmenu, &itemName, &opt_noDaemon));
+    }
+
+    {
+      NAME(strtext("Privilege Parameters"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_privilegeParameters));
+    }
+
+    {
+      NAME(strtext("Stay Privileged"));
+      ITEM(newFlagOptionMenuItem(optionsSubmenu, &itemName, &opt_stayPrivileged));
+    }
+
+    {
+      NAME(strtext("Start Message"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_startMessage));
+    }
+
+    {
+      NAME(strtext("Stop Message"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_stopMessage));
+    }
+
+    {
+      NAME(strtext("Prompt Patterns"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_promptPatterns));
+    }
+
+#ifdef ENABLE_API
+    {
+      NAME(strtext("No API"));
+      ITEM(newFlagOptionMenuItem(optionsSubmenu, &itemName, &opt_noApi));
+    }
+
+    {
+      NAME(strtext("API Parameters"));
+      ITEM(newStringOptionMenuItem(optionsSubmenu, &itemName, &opt_apiParameters));
+    }
+#endif /* ENABLE_API */
   }
 
   {
-    static const MenuString logLevels[] = {
+    SUBMENU(logSettingsSubmenu, rootMenu, strtext("Log Settings"));
+    setAdvancedSubmenu(logSettingsSubmenu);
+
+    static const MenuString logLevelNames[] = {
       [LOG_EMERG] = {.label=strtext("Emergency")},
       [LOG_ALERT] = {.label=strtext("Alert")},
       [LOG_CRIT] = {.label=strtext("Critical")},
@@ -1517,26 +1786,23 @@ makePreferencesMenu (void) {
       [LOG_DEBUG] = {.label=strtext("Debug")},
     };
 
-    SUBMENU(internalSubmenu, rootMenu, strtext("Internal Parameters"));
-    setAdvancedSubmenu(internalSubmenu);
-
     {
       NAME(strtext("System Log Level"));
-      ITEM(newEnumeratedMenuItem(internalSubmenu, &systemLogLevel, &itemName, logLevels));
+      ITEM(newEnumeratedMenuItem(logSettingsSubmenu, &systemLogLevel, &itemName, logLevelNames));
     }
 
     {
       NAME(strtext("Standard Error Log Level"));
-      ITEM(newEnumeratedMenuItem(internalSubmenu, &stderrLogLevel, &itemName, logLevels));
+      ITEM(newEnumeratedMenuItem(logSettingsSubmenu, &stderrLogLevel, &itemName, logLevelNames));
     }
 
     {
       NAME(strtext("Category Log Level"));
-      ITEM(newEnumeratedMenuItem(internalSubmenu, &categoryLogLevel, &itemName, logLevels));
+      ITEM(newEnumeratedMenuItem(logSettingsSubmenu, &categoryLogLevel, &itemName, logLevelNames));
     }
 
     {
-      SUBMENU(logCategoriesSubmenu, internalSubmenu, strtext("Log Categories"));
+      SUBMENU(logCategoriesSubmenu, logSettingsSubmenu, strtext("Log Categories"));
       setAdvancedSubmenu(logCategoriesSubmenu);
 
       {
@@ -1574,28 +1840,6 @@ makePreferencesMenu (void) {
     }
   }
 
-  {
-    SUBMENU(toolsSubmenu, rootMenu, strtext("Tools"));
-    setAdvancedSubmenu(toolsSubmenu);
-
-    {
-      NAME(strtext("Restart Braille Driver"));
-      ITEM(newToolMenuItem(toolsSubmenu, &itemName, restartBrailleDriver));
-    }
-
-  #ifdef ENABLE_SPEECH_SUPPORT
-    {
-      NAME(strtext("Restart Speech Driver"));
-      ITEM(newToolMenuItem(toolsSubmenu, &itemName, restartSpeechDriver));
-    }
-  #endif /* ENABLE_SPEECH_SUPPORT */
-
-    {
-      NAME(strtext("Restart Screen Driver"));
-      ITEM(newToolMenuItem(toolsSubmenu, &itemName, restartScreenDriver));
-    }
-  }
-
   {
     NAME(strtext("Log Messages"));
     logMessagesMenu = newSubmenuMenuItem(rootMenu, &itemName);
diff --git a/Programs/menu_prefs.h b/Programs/menu_prefs.h
index cb4c7ed01..919e56824 100644
--- a/Programs/menu_prefs.h
+++ b/Programs/menu_prefs.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/message.c b/Programs/message.c
index 899bee767..83db27cd0 100644
--- a/Programs/message.c
+++ b/Programs/message.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -23,15 +23,19 @@
 #include "embed.h"
 #include "log.h"
 #include "log_history.h"
+#include "alert.h"
 #include "message.h"
 #include "defaults.h"
 #include "async_wait.h"
 #include "async_task.h"
 #include "utf8.h"
+#include "unicode.h"
 #include "brl_utils.h"
 #include "brl_cmds.h"
+#include "clipboard.h"
 #include "spk.h"
 #include "ktb_types.h"
+#include "ctb.h"
 #include "update.h"
 #include "cmd_queue.h"
 #include "api_control.h"
@@ -42,8 +46,10 @@ int messageHoldTimeout = DEFAULT_MESSAGE_HOLD_TIMEOUT;
 typedef struct {
   const char *mode;
   MessageOptions options;
-  unsigned presented:1;
-  unsigned deallocate:1;
+
+  unsigned char presented:1;
+  unsigned char deallocate:1;
+
   char text[0];
 } MessageParameters;
 
@@ -55,16 +61,28 @@ typedef struct {
 typedef struct {
   const MessageParameters *parameters;
 
+  int timeout;
+  unsigned char endWait:1;
+  unsigned char hold:1;
+  unsigned char touch:1;
+
   struct {
     const MessageSegment *first;
     const MessageSegment *current;
     const MessageSegment *last;
   } segments;
 
-  int timeout;
-  unsigned endWait:1;
-  unsigned hold:1;
-  unsigned touch:1;
+  struct {
+    ClipboardObject *main;
+    const wchar_t *start;
+    size_t offset;
+  } clipboard;
+
+  struct {
+    const wchar_t *message;
+    const wchar_t *characters;
+    int *toMessageOffset;
+  } braille;
 } MessageData;
 
 ASYNC_CONDITION_TESTER(testEndMessageWait) {
@@ -72,6 +90,66 @@ ASYNC_CONDITION_TESTER(testEndMessageWait) {
   return mgd->endWait;
 }
 
+static const wchar_t *
+toMessageCharacter (int arg, int end, MessageData *mgd) {
+  if (arg < 0) return NULL;
+  int column = arg % brl.textColumns;
+  int row = arg / brl.textColumns;
+  if (row >= brl.textRows) return NULL;
+
+  if ((column -= textStart) < 0) return NULL;
+  if (column >= textCount) return NULL;
+
+  const MessageSegment *segment = mgd->segments.current;
+  size_t offset = (row * textCount) + column;
+
+  if (offset >= segment->length) {
+    if (!end) return NULL;
+    offset = segment->length - 1;
+  }
+
+  const wchar_t *character = segment->start + offset;
+  offset = character - mgd->braille.characters;
+
+  if (mgd->braille.characters != mgd->braille.message) {
+    const int *toMessageOffset = mgd->braille.toMessageOffset;
+
+    if (toMessageOffset) {
+      if (end) {
+        while (toMessageOffset[++offset] == CTB_NO_OFFSET);
+        // we're now at the start of the next contraction
+      } else {
+        while (toMessageOffset[offset] == CTB_NO_OFFSET) offset -= 1;
+        // we're now at the start of the current contraction
+      }
+
+      offset = toMessageOffset[offset];
+      if (end) offset -= 1;
+    }
+  }
+
+  return mgd->braille.message + offset;
+}
+
+static void
+beginClipboardCopy (const wchar_t *start, int append, MessageData *mgd) {
+  mgd->clipboard.start = start;
+  mgd->clipboard.offset = append? getClipboardContentLength(mgd->clipboard.main): 0;
+  alert(ALERT_CLIPBOARD_BEGIN);
+}
+
+static int
+endClipboardCopy (ClipboardObject *clipboard, const wchar_t *characters, size_t length, int insertCR, MessageData *mgd) {
+  lockMainClipboard();
+  int copied = copyClipboardContent(clipboard, characters, length, mgd->clipboard.offset, insertCR);
+  unlockMainClipboard();
+
+  if (!copied) return 0;
+  alert(ALERT_CLIPBOARD_END);
+  onMainClipboardUpdated();
+  return 1;
+}
+
 static int
 handleMessageCommands (int command, void *data) {
   MessageData *mgd = data;
@@ -79,11 +157,14 @@ handleMessageCommands (int command, void *data) {
   switch (command & BRL_MSK_CMD) {
     case BRL_CMD_LNUP:
     case BRL_CMD_PRDIFLN:
+    case BRL_CMD_PRNBWIN:
     case BRL_CMD_FWINLTSKIP:
     case BRL_CMD_FWINLT: {
       if (mgd->segments.current > mgd->segments.first) {
         mgd->segments.current -= 1;
         mgd->endWait = 1;
+      } else {
+        alert(ALERT_BOUNCE);
       }
 
       mgd->hold = 1;
@@ -92,6 +173,7 @@ handleMessageCommands (int command, void *data) {
 
     case BRL_CMD_LNDN:
     case BRL_CMD_NXDIFLN:
+    case BRL_CMD_NXNBWIN:
     case BRL_CMD_FWINRTSKIP:
     case BRL_CMD_FWINRT: {
       if ((mgd->hold = mgd->segments.current < mgd->segments.last)) {
@@ -102,14 +184,110 @@ handleMessageCommands (int command, void *data) {
     }
 
     default: {
-      int arg = command & BRL_MSK_ARG;
+      int arg1 = BRL_CODE_GET(ARG, command);
+      int arg2 = BRL_CODE_GET(EXT, command);
 
       switch (command & BRL_MSK_BLK) {
         case BRL_CMD_BLK(TOUCH_AT):
-          if ((mgd->touch = arg != BRL_MSK_ARG)) return 1;
+          if ((mgd->touch = arg1 != BRL_MSK_ARG)) return 1;
           mgd->timeout = 1000;
           break;
 
+        {
+          int append;
+
+        case BRL_CMD_BLK(CLIP_COPY):
+          append = 0;
+          goto doClipCopy;
+
+        case BRL_CMD_BLK(CLIP_APPEND):
+          append = 1;
+          goto doClipCopy;
+
+        doClipCopy:
+          {
+            const wchar_t *first = toMessageCharacter(arg1, 0, mgd);
+
+            if (first) {
+              const wchar_t *last = toMessageCharacter(arg2, 1, mgd);
+
+              if (last) {
+                beginClipboardCopy(first, append, mgd);
+                size_t count = last - first + 1;
+
+                if (endClipboardCopy(mgd->clipboard.main, first, count, 0, mgd)) {
+                  mgd->hold = 1;
+                  return 1;
+                }
+              }
+            }
+          }
+
+          alert(ALERT_COMMAND_REJECTED);
+          return 1;
+        }
+
+        {
+          int append;
+
+        case BRL_CMD_BLK(CLIP_NEW):
+          append = 0;
+          goto doClipBegin;
+
+        case BRL_CMD_BLK(CLIP_ADD):
+          append = 1;
+          goto doClipBegin;
+
+        doClipBegin:
+          {
+            const wchar_t *first = toMessageCharacter(arg1, 0, mgd);
+
+            if (first) {
+              beginClipboardCopy(first, append, mgd);
+              mgd->hold = 1;
+              return 1;
+            }
+          }
+
+          alert(ALERT_COMMAND_REJECTED);
+          return 1;
+        }
+
+        {
+          int insertCR;
+
+        case BRL_CMD_BLK(COPY_RECT):
+          insertCR = 1;
+          goto doClipEnd;
+
+        case BRL_CMD_BLK(COPY_LINE):
+          insertCR = 0;
+          goto doClipEnd;
+
+        doClipEnd:
+          {
+            const wchar_t *first = mgd->clipboard.start;
+
+            if (first) {
+              const wchar_t *last = toMessageCharacter(arg1, 1, mgd);
+
+              if (last) {
+                if (last > first) {
+                  size_t count = last - first + 1;
+
+                  if (endClipboardCopy(mgd->clipboard.main, first, count, insertCR, mgd)) {
+                    mgd->hold = 1;
+                    return 1;
+                  }
+                }
+              }
+            }
+          }
+
+          alert(ALERT_COMMAND_REJECTED);
+          return 1;
+        }
+
         default:
           mgd->hold = 0;
           break;
@@ -123,58 +301,172 @@ handleMessageCommands (int command, void *data) {
   return 1;
 }
 
+int
+sayMessage (const char *text) {
+#ifdef ENABLE_SPEECH_SUPPORT
+  if (isAutospeakActive()) {
+    if (!sayString(&spk, text, SAY_OPT_MUTE_FIRST)) {
+      return 0;
+    }
+  }
+#endif /* ENABLE_SPEECH_SUPPORT */
+
+  return 1;
+}
+
+static const MessageSegment *
+makeSegments (MessageSegment *segment, const wchar_t *characters, size_t characterCount, int wordWrap) {
+  const size_t windowLength = textCount * brl.textRows;
+
+  const wchar_t *character = characters;
+  const wchar_t *const charactersEnd = character + characterCount;
+
+  while (*character) {
+    /* strip leading spaces */
+    while ((character < charactersEnd) && iswspace(*character)) character += 1;
+
+    const size_t charactersLeft = charactersEnd - character;
+    if (!charactersLeft) break;
+    segment->start = character;
+
+    if (charactersLeft <= windowLength) {
+      segment->length = charactersLeft;
+    } else {
+      segment->length = windowLength;
+
+      if (wordWrap) {
+        const wchar_t *segmentEnd = segment->start + segment->length;
+
+        if (!iswspace(*segmentEnd)) {
+          while (--segmentEnd >= segment->start) {
+            if (iswspace(*segmentEnd)) break;
+          }
+
+          if (segmentEnd > segment->start) {
+            segment->length = segmentEnd - segment->start + 1;
+          }
+        }
+      }
+    }
+
+    character += segment->length;
+    segment += 1;
+  }
+
+  return segment - 1;
+}
+
+static wchar_t *
+makeBraille (const wchar_t *text, size_t textLength, size_t *brailleLength, int **offsetMap) {
+  wchar_t *braille = NULL;
+
+  *brailleLength = 0;
+  *offsetMap = NULL;
+
+  int cellsSize = MAX(0X10, textLength) * 2;
+  int cellsLimit = textLength * 10;
+
+  do {
+    unsigned char cells[cellsSize];
+    int toCellOffset[textLength + 1];
+
+    int textCount = textLength;
+    int cellCount = cellsSize;
+
+    contractText(
+      contractionTable, NULL,
+      text, &textCount,
+      cells, &cellCount,
+      toCellOffset, CTB_NO_CURSOR
+    );
+
+    // this sholdn't happen
+    if (textCount > textLength) break;
+
+    if (textCount == textLength) {
+      toCellOffset[textCount] = cellCount;
+
+      int *toTextOffset = makeInverseOffsetMap(toCellOffset, textLength);
+      if (!toTextOffset) break;
+
+      if ((braille = allocateCharacters(cellCount + 1))) {
+        const unsigned char *cell = cells;
+        const unsigned char *end = cell + cellCount;
+        wchar_t *character = braille;
+
+        while (cell < end) {
+          unsigned char dots = *cell++;
+          *character++ = dots? (dots | UNICODE_BRAILLE_ROW): WC_C(' ');
+        }
+
+        *character = 0;
+        *brailleLength = character - braille;
+        *offsetMap = toTextOffset;
+      } else {
+        free(toTextOffset);
+      }
+
+      break;
+    }
+  } while ((cellsSize <<= 1) <= cellsLimit);
+
+  return braille;
+}
+
 ASYNC_TASK_CALLBACK(presentMessage) {
   MessageParameters *mgp = data;
 
-#ifdef ENABLE_SPEECH_SUPPORT
   if (!(mgp->options & MSG_SILENT)) {
-    if (isAutospeakActive()) {
-      sayString(&spk, mgp->text, SAY_OPT_MUTE_FIRST);
-    }
+    sayMessage(mgp->text);
   }
-#endif /* ENABLE_SPEECH_SUPPORT */
 
   if (canBraille()) {
     MessageData mgd = {
+      .parameters = mgp,
       .hold = 0,
       .touch = 0,
-      .parameters = mgp
-    };
-
-    const size_t characterCount = countUtf8Characters(mgp->text);
-    MessageSegment messageSegments[characterCount];
-    wchar_t characters[characterCount + 1];
-    makeWcharsFromUtf8(mgp->text, characters, ARRAY_COUNT(characters));
 
-    const size_t brailleSize = textCount * brl.textRows;
-    wchar_t brailleBuffer[brailleSize];
+      .clipboard = {
+        .main = getMainClipboard(),
+        .start = NULL,
+        .offset = 0,
+      },
+    };
 
-    {
-      const wchar_t *character = characters;
-      const wchar_t *const end = character + characterCount;
+    const size_t textLength = countUtf8Characters(mgp->text);
+    wchar_t text[textLength + 1];
+    makeWcharsFromUtf8(mgp->text, text, ARRAY_COUNT(text));
 
-      MessageSegment *segment = messageSegments;
-      mgd.segments.current = mgd.segments.first = segment;
+    mgd.braille.message = text;
+    mgd.braille.characters = text;
+    mgd.braille.toMessageOffset = NULL;
 
-      while (*character) {
-        /* strip leading spaces */
-        while ((character < end) && iswspace(*character)) character += 1;
+    wchar_t *characters = text;
+    size_t characterCount = textLength;
+    int wordWrap = prefs.wordWrap;
 
-        const size_t charactersLeft = end - character;
-        if (!charactersLeft) break;
+    if (isContracting()) {
+      size_t brailleLength;
+      int *offsetMap;
+      wchar_t *braille = makeBraille(text, textLength, &brailleLength, &offsetMap);
 
-        segment->start = character;
-        segment->length = MIN(charactersLeft, brailleSize);
+      if (braille) {
+        characters = braille;
+        characterCount = brailleLength;
+        wordWrap = 1;
 
-        character += segment->length;
-        segment += 1;
+        mgd.braille.characters = braille;
+        mgd.braille.toMessageOffset = offsetMap;
       }
-
-      mgd.segments.last = segment - 1;
     }
 
-    int wasLinked = api.isServerLinked();
-    if (wasLinked) api.unlinkServer();
+    MessageSegment messageSegments[characterCount];
+    mgd.segments.current = mgd.segments.first = messageSegments;
+    mgd.segments.last = makeSegments(messageSegments, characters, characterCount, wordWrap);
+    mgd.clipboard.start = mgd.segments.first->start;
+
+    int apiWasLinked = api.isServerLinked();
+    if (apiWasLinked) api.unlinkServer();
 
     suspendUpdates();
     pushCommandEnvironment("message", NULL, NULL);
@@ -183,20 +475,17 @@ ASYNC_TASK_CALLBACK(presentMessage) {
 
     while (1) {
       const MessageSegment *segment = mgd.segments.current;
-      size_t cellCount = segment->length;
-      int lastSegment = segment == mgd.segments.last;
-
-      wmemcpy(brailleBuffer, segment->start, cellCount);
+      int isLastSegment = segment == mgd.segments.last;
       brl.cursor = BRL_NO_CURSOR;
 
-      if (!writeBrailleCharacters(mgp->mode, brailleBuffer, cellCount)) {
+      if (!writeBrailleCharacters(mgp->mode, segment->start, segment->length)) {
         mgp->presented = 0;
         break;
       }
 
       mgd.timeout = messageHoldTimeout - brl.writeDelay;
       drainBrailleOutput(&brl, 0);
-      if (!mgd.hold && lastSegment && (mgp->options & MSG_NODELAY)) break;
+      if (!mgd.hold && isLastSegment && (mgp->options & MSG_NODELAY)) break;
       mgd.timeout = MAX(mgd.timeout, 0);
 
       while (1) {
@@ -210,7 +499,7 @@ ASYNC_TASK_CALLBACK(presentMessage) {
         if (mgd.hold || mgd.touch) {
           mgd.timeout = 1000000;
         } else if (timedOut) {
-          if (lastSegment) goto DONE;
+          if (isLastSegment) goto DONE;
           mgd.segments.current += 1;
           mgd.timeout = messageHoldTimeout;
           break;
@@ -221,9 +510,12 @@ ASYNC_TASK_CALLBACK(presentMessage) {
     }
 
   DONE:
+    if (characters != text) free(characters);
+    if (mgd.braille.toMessageOffset) free(mgd.braille.toMessageOffset);
+
     popCommandEnvironment();
     resumeUpdates(1);
-    if (wasLinked) api.linkServer();
+    if (apiWasLinked) api.linkServer();
   }
 
   if (mgp->deallocate) free(mgp);
diff --git a/Programs/messages.c b/Programs/messages.c
index b0e14089a..959eb76f4 100644
--- a/Programs/messages.c
+++ b/Programs/messages.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/midi.c b/Programs/midi.c
index 1e60e1ab9..dc6378465 100644
--- a/Programs/midi.c
+++ b/Programs/midi.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/midi_alsa.c b/Programs/midi_alsa.c
index 4da529b86..b5c67b3d5 100644
--- a/Programs/midi_alsa.c
+++ b/Programs/midi_alsa.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/midi_darwin.c b/Programs/midi_darwin.c
index 392ef9f9a..4aa932265 100644
--- a/Programs/midi_darwin.c
+++ b/Programs/midi_darwin.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/midi_none.c b/Programs/midi_none.c
index 2b518f60d..489befce6 100644
--- a/Programs/midi_none.c
+++ b/Programs/midi_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/midi_oss.c b/Programs/midi_oss.c
index 0511eca29..d1488e015 100644
--- a/Programs/midi_oss.c
+++ b/Programs/midi_oss.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/midi_windows.c b/Programs/midi_windows.c
index 857c43044..3e647eda1 100644
--- a/Programs/midi_windows.c
+++ b/Programs/midi_windows.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/mkdrvtab b/Programs/mkdrvtab
index 7ba17f240..e41b87d3a 100755
--- a/Programs/mkdrvtab
+++ b/Programs/mkdrvtab
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Programs/mntfs_linux.c b/Programs/mntfs_linux.c
index adebbfe71..0df4aca46 100644
--- a/Programs/mntfs_linux.c
+++ b/Programs/mntfs_linux.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/mntfs_none.c b/Programs/mntfs_none.c
index 24ef061d8..87819180f 100644
--- a/Programs/mntfs_none.c
+++ b/Programs/mntfs_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/mntpt.c b/Programs/mntpt.c
index cc52df2aa..ab5493226 100644
--- a/Programs/mntpt.c
+++ b/Programs/mntpt.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/mntpt_internal.h b/Programs/mntpt_internal.h
index f54bd8703..aecc2832d 100644
--- a/Programs/mntpt_internal.h
+++ b/Programs/mntpt_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/mntpt_mntent.c b/Programs/mntpt_mntent.c
index 326879152..edd56ccf9 100644
--- a/Programs/mntpt_mntent.c
+++ b/Programs/mntpt_mntent.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/mntpt_mntent.h b/Programs/mntpt_mntent.h
index 3ff8bd6c0..be6ff2c0e 100644
--- a/Programs/mntpt_mntent.h
+++ b/Programs/mntpt_mntent.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/mntpt_mnttab.c b/Programs/mntpt_mnttab.c
index 0731b80d5..3fde09c1a 100644
--- a/Programs/mntpt_mnttab.c
+++ b/Programs/mntpt_mnttab.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/mntpt_mnttab.h b/Programs/mntpt_mnttab.h
index 2455f3363..e33674f5f 100644
--- a/Programs/mntpt_mnttab.h
+++ b/Programs/mntpt_mnttab.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/mntpt_none.c b/Programs/mntpt_none.c
index be3b79c1e..b27acbc6a 100644
--- a/Programs/mntpt_none.c
+++ b/Programs/mntpt_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/mntpt_none.h b/Programs/mntpt_none.h
index bfdbfd756..79c682368 100644
--- a/Programs/mntpt_none.h
+++ b/Programs/mntpt_none.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/morse.c b/Programs/morse.c
index 94f26622b..7ede018f1 100644
--- a/Programs/morse.c
+++ b/Programs/morse.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/msg_queue.c b/Programs/msg_queue.c
index fc0704ff5..f2ccb1ba7 100644
--- a/Programs/msg_queue.c
+++ b/Programs/msg_queue.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/msgtest.c b/Programs/msgtest.c
index 83f5007b2..8d6d1517d 100644
--- a/Programs/msgtest.c
+++ b/Programs/msgtest.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -41,7 +41,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .letter = 'd',
     .argument = strtext("path"),
     .setting.string = &opt_localeDirectory,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = strtext("the locale directory containing the translations")
   },
 
diff --git a/Programs/notes.c b/Programs/notes.c
index 122ddf615..f316fe4c8 100644
--- a/Programs/notes.c
+++ b/Programs/notes.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/notes_beep.c b/Programs/notes_beep.c
index 2b3924f9f..847a16690 100644
--- a/Programs/notes_beep.c
+++ b/Programs/notes_beep.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/notes_fm.c b/Programs/notes_fm.c
index a48fc71b9..dedc52625 100644
--- a/Programs/notes_fm.c
+++ b/Programs/notes_fm.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/notes_midi.c b/Programs/notes_midi.c
index 3c4331810..1131012dc 100644
--- a/Programs/notes_midi.c
+++ b/Programs/notes_midi.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -25,8 +25,9 @@
 #include "log.h"
 #include "midi.h"
 #include "notes.h"
+#include "options.h"
 
-char *opt_midiDevice;
+char *opt_midiDevice = "";
 
 struct NoteDeviceStruct {
   MidiDevice *midi;
diff --git a/Programs/notes_pcm.c b/Programs/notes_pcm.c
index 7f09ac6ab..95732ddf3 100644
--- a/Programs/notes_pcm.c
+++ b/Programs/notes_pcm.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -25,8 +25,9 @@
 #include "log.h"
 #include "pcm.h"
 #include "notes.h"
+#include "options.h"
 
-char *opt_pcmDevice;
+char *opt_pcmDevice = "";
 
 struct NoteDeviceStruct {
   PcmDevice *pcm;
diff --git a/Programs/options.h b/Programs/options.h
new file mode 100644
index 000000000..7b92bd329
--- /dev/null
+++ b/Programs/options.h
@@ -0,0 +1,85 @@
+/*
+ * BRLTTY - A background process providing access to the console screen (when in
+ *          text mode) for a blind person using a refreshable braille display.
+ *
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
+ *
+ * BRLTTY comes with ABSOLUTELY NO WARRANTY.
+ *
+ * This is free software, placed under the terms of the
+ * GNU Lesser General Public License, as published by the Free Software
+ * Foundation; either version 2.1 of the License, or (at your option) any
+ * later version. Please see the file LICENSE-LGPL for details.
+ *
+ * Web Page: http://brltty.app/
+ *
+ * This software is maintained by Dave Mielke <dave@mielke.cc>.
+ */
+
+#ifndef BRLTTY_INCLUDED_OPTIONS
+#define BRLTTY_INCLUDED_OPTIONS
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+extern char *opt_configurationFile;
+extern int opt_environmentVariables;
+extern int opt_bootParameters;
+
+extern char *opt_preferencesFile;
+extern char *opt_overridePreferences;
+
+extern char *opt_tablesDirectory;
+extern char *opt_driversDirectory;
+extern char *opt_helpersDirectory;
+extern char *opt_updatableDirectory;
+extern char *opt_writableDirectory;
+extern char *opt_localeDirectory;
+
+extern char *opt_textTable;
+extern char *opt_contractionTable;
+extern char *opt_attributesTable;
+extern char *opt_keyboardTable;
+extern char *opt_keyboardProperties;
+
+extern int opt_guiKeyboardEnabled;
+extern char *opt_guiKeyboardTable;
+
+extern char *opt_brailleDriver;
+extern char *opt_brailleParameters;
+extern char *opt_brailleDevice;
+extern int opt_releaseDevice;
+
+extern char *opt_speechDriver;
+extern char *opt_speechParameters;
+extern int opt_quietIfNoBraille;
+extern char *opt_speechInput;
+
+extern char *opt_screenDriver;
+extern char *opt_screenParameters;
+
+extern char *opt_pcmDevice;
+extern char *opt_midiDevice;
+
+extern char *opt_logFile;
+extern int opt_logToStandardError;
+
+extern char *opt_pidFile;
+extern int opt_noDaemon;
+
+extern char *opt_privilegeParameters;
+extern int opt_stayPrivileged;
+
+extern char *opt_startMessage;
+extern char *opt_stopMessage;
+extern char *opt_promptPatterns;
+
+extern int opt_noApi;
+extern char *opt_apiParameters;
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* BRLTTY_INCLUDED_OPTIONS */
diff --git a/Programs/parameters.h b/Programs/parameters.h
index 5f25f41e4..67800471d 100644
--- a/Programs/parameters.h
+++ b/Programs/parameters.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/params_linux.c b/Programs/params_linux.c
index 5a4201d0a..e858743e1 100644
--- a/Programs/params_linux.c
+++ b/Programs/params_linux.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/params_none.c b/Programs/params_none.c
index 800b18967..b9da92408 100644
--- a/Programs/params_none.c
+++ b/Programs/params_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/parse.c b/Programs/parse.c
index 08b892a81..c0bb72918 100644
--- a/Programs/parse.c
+++ b/Programs/parse.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pcm.c b/Programs/pcm.c
index 6d6df2aa1..615556cca 100644
--- a/Programs/pcm.c
+++ b/Programs/pcm.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pcm_alsa.c b/Programs/pcm_alsa.c
index b4e899dd3..4254ac3b5 100644
--- a/Programs/pcm_alsa.c
+++ b/Programs/pcm_alsa.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pcm_android.c b/Programs/pcm_android.c
index b3f7beb78..c7f65f1e0 100644
--- a/Programs/pcm_android.c
+++ b/Programs/pcm_android.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pcm_audio.c b/Programs/pcm_audio.c
index 67cbc2b86..94a066006 100644
--- a/Programs/pcm_audio.c
+++ b/Programs/pcm_audio.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pcm_hpux.c b/Programs/pcm_hpux.c
index 5de800fd4..b36857a0d 100644
--- a/Programs/pcm_hpux.c
+++ b/Programs/pcm_hpux.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pcm_none.c b/Programs/pcm_none.c
index 7750c07f6..6cb91f8fe 100644
--- a/Programs/pcm_none.c
+++ b/Programs/pcm_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pcm_oss.c b/Programs/pcm_oss.c
index b27444c44..7dbb0c5e5 100644
--- a/Programs/pcm_oss.c
+++ b/Programs/pcm_oss.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pcm_qsa.c b/Programs/pcm_qsa.c
index 3edfa4d9f..f5daea252 100644
--- a/Programs/pcm_qsa.c
+++ b/Programs/pcm_qsa.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pcm_windows.c b/Programs/pcm_windows.c
index e55e95aac..b596a84cc 100644
--- a/Programs/pcm_windows.c
+++ b/Programs/pcm_windows.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pgmpath_freebsd.c b/Programs/pgmpath_freebsd.c
index 584b2a3ba..44409cddd 100644
--- a/Programs/pgmpath_freebsd.c
+++ b/Programs/pgmpath_freebsd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pgmpath_hurd.c b/Programs/pgmpath_hurd.c
index 2ffe701b9..b0e84a44e 100644
--- a/Programs/pgmpath_hurd.c
+++ b/Programs/pgmpath_hurd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pgmpath_linux.c b/Programs/pgmpath_linux.c
index 2ffe701b9..b0e84a44e 100644
--- a/Programs/pgmpath_linux.c
+++ b/Programs/pgmpath_linux.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pgmpath_none.c b/Programs/pgmpath_none.c
index b7ccbc478..c90501ce1 100644
--- a/Programs/pgmpath_none.c
+++ b/Programs/pgmpath_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pgmpath_solaris.c b/Programs/pgmpath_solaris.c
index 019f3d9ef..547aaaad1 100644
--- a/Programs/pgmpath_solaris.c
+++ b/Programs/pgmpath_solaris.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pgmpath_windows.c b/Programs/pgmpath_windows.c
index 76fbd8c70..aa1afa66b 100644
--- a/Programs/pgmpath_windows.c
+++ b/Programs/pgmpath_windows.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pgmprivs_linux.c b/Programs/pgmprivs_linux.c
index 9a553a618..4eb8b02b5 100644
--- a/Programs/pgmprivs_linux.c
+++ b/Programs/pgmprivs_linux.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -342,6 +342,7 @@ processRequiredGroups (GroupsProcessor *processGroups, int logProblems, void *da
         const char *path = rge->path;
 
         if (path) {
+          logMessage(LOG_DEBUG, "checking group owner of path: %s", path);
           struct stat status;
 
           if (stat(path, &status) != -1) {
@@ -571,6 +572,7 @@ static const RequiredCapabilityEntry requiredCapabilityTable[] = {
 
 static void
 setRequiredCapabilities (int stayPrivileged) {
+  logCurrentCapabilities("temporary");
   cap_t newCaps, oldCaps;
 
   if (amPrivilegedUser()) {
@@ -2235,7 +2237,7 @@ getPrivilegeParametersPlatform (void) {
 
 void
 establishProgramPrivileges (char **parameters, int stayPrivileged) {
-  logCurrentCapabilities("at start");
+  logCurrentCapabilities("initial");
 
   setCommandSearchPath(parameters[PARM_PATH]);
   setDefaultShell(parameters[PARM_SHELL]);
@@ -2279,7 +2281,7 @@ establishProgramPrivileges (char **parameters, int stayPrivileged) {
   }
 
   establishPrivileges(stayPrivileged);
-  logCurrentCapabilities("after relinquish");
+  logCurrentCapabilities("permanent");
 
 #ifdef SECCOMP_MODE_FILTER
   scfInstallFilter(parameters[PARM_SCFMODE]);
diff --git a/Programs/pgmprivs_none.c b/Programs/pgmprivs_none.c
index ce6bdf36d..4e5598563 100644
--- a/Programs/pgmprivs_none.c
+++ b/Programs/pgmprivs_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pid.c b/Programs/pid.c
index a6f668a47..79fb78aa3 100644
--- a/Programs/pid.c
+++ b/Programs/pid.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pipe.c b/Programs/pipe.c
index 0c6d40e2e..05affb87a 100644
--- a/Programs/pipe.c
+++ b/Programs/pipe.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pipe.h b/Programs/pipe.h
index 6cb428338..3c3000e1a 100644
--- a/Programs/pipe.h
+++ b/Programs/pipe.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ports_glibc.c b/Programs/ports_glibc.c
index 199befde2..4233f9ea0 100644
--- a/Programs/ports_glibc.c
+++ b/Programs/ports_glibc.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ports_grub.c b/Programs/ports_grub.c
index e90a6d532..f89993c06 100644
--- a/Programs/ports_grub.c
+++ b/Programs/ports_grub.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ports_kfreebsd.c b/Programs/ports_kfreebsd.c
index e2eee4f8d..69c083146 100644
--- a/Programs/ports_kfreebsd.c
+++ b/Programs/ports_kfreebsd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ports_msdos.c b/Programs/ports_msdos.c
index f205ff625..66ef2ed2a 100644
--- a/Programs/ports_msdos.c
+++ b/Programs/ports_msdos.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ports_none.c b/Programs/ports_none.c
index fb6a908c7..6af3154b2 100644
--- a/Programs/ports_none.c
+++ b/Programs/ports_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ports_windows.c b/Programs/ports_windows.c
index 357bd82c1..b878eeb56 100644
--- a/Programs/ports_windows.c
+++ b/Programs/ports_windows.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ports_x86.h b/Programs/ports_x86.h
index 4f548233a..ac3c2b5ff 100644
--- a/Programs/ports_x86.h
+++ b/Programs/ports_x86.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pref_tables.c b/Programs/pref_tables.c
index 97e08dc49..b713988ab 100644
--- a/Programs/pref_tables.c
+++ b/Programs/pref_tables.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -118,6 +118,7 @@ PREFERENCE_STRING_TABLE(tuneDevice,
 PREFERENCE_STRING_TABLE(speechPunctuation,
   [SPK_PUNCTUATION_NONE] = "none",
   [SPK_PUNCTUATION_SOME] = "some",
+  [SPK_PUNCTUATION_MOST] = "most",
   [SPK_PUNCTUATION_ALL] = "all",
 )
 
@@ -438,6 +439,12 @@ const PreferenceDefinition preferenceDefinitionTable[] = {
     .setting = &prefs.autorepeatPanning
   },
 
+  { .name = "alternate-paste-mode-enabled",
+    .defaultValue = DEFAULT_ALTERNATE_PASTE_MODE_ENABLED,
+    .settingNames = &preferenceStringTable_boolean,
+    .setting = &prefs.alternatePasteModeEnabled
+  },
+
   { .name = "touch-navigation",
     .defaultValue = DEFAULT_TOUCH_NAVIGATION,
     .settingNames = &preferenceStringTable_boolean,
diff --git a/Programs/pref_tables.h b/Programs/pref_tables.h
index 57c8a5fea..54f89b3b7 100644
--- a/Programs/pref_tables.h
+++ b/Programs/pref_tables.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/prefs.c b/Programs/prefs.c
index c6e359c43..d6030e3b8 100644
--- a/Programs/prefs.c
+++ b/Programs/prefs.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -560,7 +560,9 @@ putHeader (FILE *file) {
 int
 savePreferencesFile (const char *path) {
   int ok = 0;
-  FILE *file = openDataFile(path, "w", 0);
+
+  logMessage(LOG_DEBUG, "saving preferences: %s", path);
+  FILE *file = fopen(path, "w");
 
   if (file) {
     if (putHeader(file)) {
diff --git a/Programs/profile.c b/Programs/profile.c
index af18f9174..c4cbeb676 100644
--- a/Programs/profile.c
+++ b/Programs/profile.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/profile.h b/Programs/profile.h
index 3591e4031..c43b27b2e 100644
--- a/Programs/profile.h
+++ b/Programs/profile.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/profile_types.h b/Programs/profile_types.h
index 843eac06f..e97e5dc5b 100644
--- a/Programs/profile_types.h
+++ b/Programs/profile_types.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/program.c b/Programs/program.c
index 1523e9dab..8bf6a2876 100644
--- a/Programs/program.c
+++ b/Programs/program.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -158,28 +158,10 @@ getProgramDirectory (void) {
 }
 
 int
-fixInstallPath (char **path) {
+toAbsoluteInstallPath (char **path) {
   const char *programDirectory = getProgramDirectory();
   if (!programDirectory) programDirectory = CURRENT_DIRECTORY_NAME;
-
-  const char *problem = strtext("cannot fix install path");
-  char *newPath = makePath(programDirectory, *path);
-
-  if (newPath) {
-    if (changeStringSetting(path, newPath)) {
-      if (isAbsolutePath(*path)) {
-        problem = NULL;
-      } else {
-        problem = strtext("install path not absolute");
-      }
-    }
-
-    free(newPath);
-  }
-
-  if (!problem) return 1;
-  logMessage(LOG_WARNING, "%s: %s", gettext(problem), *path);
-  return 0;
+  return anchorRelativePath(path, programDirectory);
 }
 
 char *
@@ -189,21 +171,6 @@ makeProgramPath (const char *name) {
    return makePath(directory, name);
 }
 
-char *
-makeCommandPath (const char *name) {
-  char *path = NULL;
-  char *directory = NULL;
-
-  if (changeStringSetting(&directory, COMMANDS_DIRECTORY)) {
-    if (fixInstallPath(&directory)) {
-      path = makePath(directory, name);
-    }
-  }
-
-  if (directory) free(directory);
-  return path;
-}
-
 int
 createPidFile (const char *path, ProcessIdentifier pid) {
 #if defined(GRUB_RUNTIME)
diff --git a/Programs/pty_object.c b/Programs/pty_object.c
index bfed2b992..34ea49049 100644
--- a/Programs/pty_object.c
+++ b/Programs/pty_object.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/pty_screen.c b/Programs/pty_screen.c
index 2d7e905f8..7db902f3b 100644
--- a/Programs/pty_screen.c
+++ b/Programs/pty_screen.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -308,6 +308,13 @@ ptyEndScreen (void) {
   destroySegment();
 }
 
+void
+ptyResizeScreen (unsigned int lines, unsigned int columns) {
+  if (is_term_resized(lines, columns)) {
+    resize_term(lines, columns);
+  }
+}
+
 void
 ptyRefreshScreen (void) {
   sendTerminalMessage(TERM_MSG_SEGMENT_UPDATED, NULL, 0);
diff --git a/Programs/pty_terminal.c b/Programs/pty_terminal.c
index 2d24211d0..99c5b9fd5 100644
--- a/Programs/pty_terminal.c
+++ b/Programs/pty_terminal.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -99,6 +99,11 @@ ptyEndTerminal (void) {
   ptyEndScreen();
 }
 
+void
+ptyResizeTerminal (unsigned int lines, unsigned int columns) {
+  ptyResizeScreen(lines, columns);
+}
+
 static void
 soundAlert (void) {
   beep();
@@ -574,7 +579,21 @@ performBracketAction (unsigned char byte) {
       return OBP_DONE;
     }
 
-    case 'H': {
+    {
+      const char *action;
+      int allowZero;
+
+    case 'f':
+      action = "hvp";
+      allowZero = 1;
+      goto doMoveCursor;
+
+    case 'H':
+      action = "cup";
+      allowZero = 0;
+      goto doMoveCursor;
+
+    doMoveCursor:
       if (outputParserNumberCount == 0) {
         addOutputParserNumber(1);
         addOutputParserNumber(1);
@@ -585,10 +604,15 @@ performBracketAction (unsigned char byte) {
       unsigned int *row = &outputParserNumberArray[0];
       unsigned int *column = &outputParserNumberArray[1];
 
-      if (!(*row)--) return OBP_UNEXPECTED;
-      if (!(*column)--) return OBP_UNEXPECTED;
+      if (allowZero) {
+        if (*row) *row -= 1;
+        if (*column) *column -= 1;
+      } else {
+        if (!(*row)--) return OBP_UNEXPECTED;
+        if (!(*column)--) return OBP_UNEXPECTED;
+      }
 
-      logOutputAction("cup", "set cursor position");
+      logOutputAction(action, "set cursor position");
       ptySetCursorPosition(*row, *column);
       return OBP_DONE;
     }
diff --git a/Programs/queue.c b/Programs/queue.c
index e74105280..c0f9b0e3c 100644
--- a/Programs/queue.c
+++ b/Programs/queue.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/report.c b/Programs/report.c
index 7b7dc4275..1044f4b06 100644
--- a/Programs/report.c
+++ b/Programs/report.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/report.h b/Programs/report.h
index df7714c4b..310e9d93f 100644
--- a/Programs/report.h
+++ b/Programs/report.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/revision.c b/Programs/revision.c
index 199a42e93..c823398d0 100644
--- a/Programs/revision.c
+++ b/Programs/revision.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/rgx.c b/Programs/rgx.c
index dc59d7779..972716c29 100644
--- a/Programs/rgx.c
+++ b/Programs/rgx.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/rgx_internal.h b/Programs/rgx_internal.h
index 2fa1e0027..1fd2e109c 100644
--- a/Programs/rgx_internal.h
+++ b/Programs/rgx_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/rgx_libpcre2-32.c b/Programs/rgx_libpcre2-32.c
index b172aaaac..1cb7f6ae3 100644
--- a/Programs/rgx_libpcre2-32.c
+++ b/Programs/rgx_libpcre2-32.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/rgx_libpcre32.c b/Programs/rgx_libpcre32.c
index 6c158a783..fc725105e 100644
--- a/Programs/rgx_libpcre32.c
+++ b/Programs/rgx_libpcre32.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/rgx_none.c b/Programs/rgx_none.c
index 921448aa8..30eb76959 100644
--- a/Programs/rgx_none.c
+++ b/Programs/rgx_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/routing.c b/Programs/routing.c
index 519a477f2..b265986a9 100644
--- a/Programs/routing.c
+++ b/Programs/routing.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/routing.h b/Programs/routing.h
index 72fc32ee3..ab6eea20f 100644
--- a/Programs/routing.h
+++ b/Programs/routing.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scr.c b/Programs/scr.c
index e7d87d557..d2bd2949e 100644
--- a/Programs/scr.c
+++ b/Programs/scr.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -96,7 +96,7 @@ refreshScreen (void) {
 
 void
 describeScreen (ScreenDescription *description) {
-  describeBaseScreen(currentScreen, description);
+  describeScreenObject(description, currentScreen);
   if (description->unreadable) description->quality = SCQ_NONE;
 }
 
@@ -157,6 +157,11 @@ insertScreenKey (ScreenKey key) {
   return currentScreen->insertKey(key);
 }
 
+ScreenPasteMode
+getScreenPasteMode (void) {
+  return currentScreen->getPasteMode();
+}
+
 int
 routeScreenCursor (int column, int row, int screen) {
   return currentScreen->routeCursor(column, row, screen);
diff --git a/Programs/scr.h b/Programs/scr.h
index 35dbdbaa3..0cfc931b7 100644
--- a/Programs/scr.h
+++ b/Programs/scr.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -36,6 +36,7 @@ extern void describeScreen (ScreenDescription *);		/* get screen status */
 extern int readScreen (short left, short top, short width, short height, ScreenCharacter *buffer);
 extern int readScreenText (short left, short top, short width, short height, wchar_t *buffer);
 extern int insertScreenKey (ScreenKey key);
+extern ScreenPasteMode getScreenPasteMode (void);
 extern int routeScreenCursor (int column, int row, int screen);
 extern int highlightScreenRegion (int left, int right, int top, int bottom);
 extern int unhighlightScreenRegion (void);
diff --git a/Programs/scr_base.c b/Programs/scr_base.c
index 0673297b9..9558c3c9b 100644
--- a/Programs/scr_base.c
+++ b/Programs/scr_base.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -171,6 +171,11 @@ insertKey_BaseScreen (ScreenKey key) {
   return 0;
 }
 
+static ScreenPasteMode
+getPasteMode_BaseScreen (void) {
+  return SPM_UNKNOWN;
+}
+
 static int
 routeCursor_BaseScreen (int column, int row, int screen) {
   return 0;
@@ -223,6 +228,7 @@ initializeBaseScreen (BaseScreen *base) {
 
   base->readCharacters = readCharacters_BaseScreen;
   base->insertKey = insertKey_BaseScreen;
+  base->getPasteMode = getPasteMode_BaseScreen;
   base->routeCursor = routeCursor_BaseScreen;
 
   base->highlightRegion = highlightRegion_BaseScreen;
@@ -243,18 +249,18 @@ initializeBaseScreen (BaseScreen *base) {
 }
 
 void
-describeBaseScreen (BaseScreen *base, ScreenDescription *description) {
+describeScreenObject (ScreenDescription *description, BaseScreen *screen) {
+  description->number = 0;
+  description->hasCursor = 1;
+  description->hasSelection = 0;
+
   description->unreadable = NULL;
   description->quality = SCQ_GOOD;
 
-  description->number = 0;
   description->cols = description->rows = 1;
   description->posx = description->posy = 0;
 
-  description->hasCursor = 1;
-  description->hasSelection = 0;
-
-  base->describe(description);
+  screen->describe(description);
 
   if (description->unreadable) {
     description->hasCursor = 0;
diff --git a/Programs/scr_driver.c b/Programs/scr_driver.c
index 1848010c3..8f4e2861c 100644
--- a/Programs/scr_driver.c
+++ b/Programs/scr_driver.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -81,16 +81,14 @@ describe_NoScreen (ScreenDescription *description) {
     screenMessage = message;
   }
 
-  if (screenMessage)
-    description->quality = SCQ_LOW;
-  else
-    description->quality = SCQ_NONE;
+  description->number = currentVirtualTerminal_NoScreen();
+  description->quality = screenMessage? SCQ_LOW: SCQ_NONE;
 
   description->rows = 1;
   description->cols = strlen(screenMessage);
+
   description->posx = 0;
   description->posy = 0;
-  description->number = currentVirtualTerminal_NoScreen();
 }
 
 static int
diff --git a/Programs/scr_emulator.c b/Programs/scr_emulator.c
index f830d3cfc..edaab77c7 100644
--- a/Programs/scr_emulator.c
+++ b/Programs/scr_emulator.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scr_frozen.c b/Programs/scr_frozen.c
index b9f13bc0b..7ec07716d 100644
--- a/Programs/scr_frozen.c
+++ b/Programs/scr_frozen.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -61,7 +61,7 @@ stopFreezeReminderAlarm (void) {
 
 static int
 construct_FrozenScreen (BaseScreen *source) {
-  describeBaseScreen(source, &screenDescription);
+  describeScreenObject(&screenDescription, source);
 
   if ((screenCharacters = calloc(screenDescription.rows*screenDescription.cols, sizeof(*screenCharacters)))) {
     const ScreenBox box = {
diff --git a/Programs/scr_frozen.h b/Programs/scr_frozen.h
index f73642b8d..86196aa05 100644
--- a/Programs/scr_frozen.h
+++ b/Programs/scr_frozen.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scr_gpm.c b/Programs/scr_gpm.c
index 9a2e8d54a..61883e9e8 100644
--- a/Programs/scr_gpm.c
+++ b/Programs/scr_gpm.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scr_help.c b/Programs/scr_help.c
index 2fd4adb8d..440da098b 100644
--- a/Programs/scr_help.c
+++ b/Programs/scr_help.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scr_help.h b/Programs/scr_help.h
index 07063871b..7e126100a 100644
--- a/Programs/scr_help.h
+++ b/Programs/scr_help.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scr_internal.h b/Programs/scr_internal.h
index ed43a1066..0ac3626fe 100644
--- a/Programs/scr_internal.h
+++ b/Programs/scr_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scr_main.c b/Programs/scr_main.c
index 41032feab..437657596 100644
--- a/Programs/scr_main.c
+++ b/Programs/scr_main.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scr_menu.c b/Programs/scr_menu.c
index 480862ba7..4cf4fe9c7 100644
--- a/Programs/scr_menu.c
+++ b/Programs/scr_menu.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scr_menu.h b/Programs/scr_menu.h
index c786a9949..7b43e1ca1 100644
--- a/Programs/scr_menu.h
+++ b/Programs/scr_menu.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scr_real.c b/Programs/scr_real.c
index 895a90816..94b317d84 100644
--- a/Programs/scr_real.c
+++ b/Programs/scr_real.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scr_special.c b/Programs/scr_special.c
index fbd9fa396..9d7732316 100644
--- a/Programs/scr_special.c
+++ b/Programs/scr_special.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scr_special.h b/Programs/scr_special.h
index bf844ac8e..e04238740 100644
--- a/Programs/scr_special.h
+++ b/Programs/scr_special.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scr_terminal.c b/Programs/scr_terminal.c
index b4d3fda7f..6c478edb4 100644
--- a/Programs/scr_terminal.c
+++ b/Programs/scr_terminal.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scr_utils.c b/Programs/scr_utils.c
index 1bd3e2bba..5f295b189 100644
--- a/Programs/scr_utils.c
+++ b/Programs/scr_utils.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/scrtest.c b/Programs/scrtest.c
index ab6175cff..161573672 100644
--- a/Programs/scrtest.c
+++ b/Programs/scrtest.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -25,6 +25,7 @@
 
 #include "program.h"
 #include "cmdline.h"
+#include "options.h"
 #include "log.h"
 #include "parse.h"
 #include "scr.h"
@@ -33,8 +34,8 @@ static char *opt_boxLeft;
 static char *opt_boxWidth;
 static char *opt_boxTop;
 static char *opt_boxHeight;
-static char *opt_screenDriver;
-static char *opt_driversDirectory;
+char *opt_screenDriver;
+char *opt_driversDirectory;
 
 BEGIN_OPTION_TABLE(programOptions)
   { .word = "screen-driver",
@@ -78,7 +79,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = "directory",
     .setting.string = &opt_driversDirectory,
     .internal.setting = DRIVERS_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = "Path to directory for loading drivers."
   },
 END_OPTION_TABLE(programOptions)
diff --git a/Programs/serial.c b/Programs/serial.c
index a29574824..074821cfd 100644
--- a/Programs/serial.c
+++ b/Programs/serial.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -245,16 +245,6 @@ serialSetFlowControl (SerialDevice *serial, SerialFlowControl flow) {
   return 0;
 }
 
-int
-serialSetParameters (SerialDevice *serial, const SerialParameters *parameters) {
-  if (!serialSetBaud(serial, parameters->baud)) return 0;
-  if (!serialSetDataBits(serial, parameters->dataBits)) return 0;
-  if (!serialSetStopBits(serial, parameters->stopBits)) return 0;
-  if (!serialSetParity(serial, parameters->parity)) return 0;
-  if (!serialSetFlowControl(serial, parameters->flowControl)) return 0;
-  return 1;
-}
-
 unsigned int
 serialGetCharacterSize (const SerialParameters *parameters) {
   unsigned int size = 1 /* start bit */ + parameters->dataBits;
@@ -351,6 +341,16 @@ serialFlushAttributes (SerialDevice *serial) {
   return 1;
 }
 
+int
+serialSetParameters (SerialDevice *serial, const SerialParameters *parameters) {
+  if (!serialSetBaud(serial, parameters->baud)) return 0;
+  if (!serialSetDataBits(serial, parameters->dataBits)) return 0;
+  if (!serialSetStopBits(serial, parameters->stopBits)) return 0;
+  if (!serialSetParity(serial, parameters->parity)) return 0;
+  if (!serialSetFlowControl(serial, parameters->flowControl)) return 0;
+  return serialFlushAttributes(serial);
+}
+
 int
 serialAwaitInput (SerialDevice *serial, int timeout) {
   if (!serialFlushAttributes(serial)) return 0;
diff --git a/Programs/serial_grub.c b/Programs/serial_grub.c
index f76e7a76e..c22fae481 100644
--- a/Programs/serial_grub.c
+++ b/Programs/serial_grub.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/serial_grub.h b/Programs/serial_grub.h
index c6fb6aa21..144eaf2f1 100644
--- a/Programs/serial_grub.h
+++ b/Programs/serial_grub.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/serial_internal.h b/Programs/serial_internal.h
index 47008a5ff..98388c3eb 100644
--- a/Programs/serial_internal.h
+++ b/Programs/serial_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/serial_msdos.c b/Programs/serial_msdos.c
index 27e096818..99ed4f1fa 100644
--- a/Programs/serial_msdos.c
+++ b/Programs/serial_msdos.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/serial_msdos.h b/Programs/serial_msdos.h
index 6ab108a03..d7be617dc 100644
--- a/Programs/serial_msdos.h
+++ b/Programs/serial_msdos.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/serial_none.c b/Programs/serial_none.c
index 936ac860a..e028c9b1c 100644
--- a/Programs/serial_none.c
+++ b/Programs/serial_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/serial_none.h b/Programs/serial_none.h
index 71a9884bf..5632b5110 100644
--- a/Programs/serial_none.h
+++ b/Programs/serial_none.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/serial_termios.c b/Programs/serial_termios.c
index d31665c2a..6c93e7c95 100644
--- a/Programs/serial_termios.c
+++ b/Programs/serial_termios.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/serial_termios.h b/Programs/serial_termios.h
index 3a93f89c7..f2e223a49 100644
--- a/Programs/serial_termios.h
+++ b/Programs/serial_termios.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/serial_uart.h b/Programs/serial_uart.h
index f1497f653..ebba5e078 100644
--- a/Programs/serial_uart.h
+++ b/Programs/serial_uart.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/serial_windows.c b/Programs/serial_windows.c
index e9bb2a33b..4261109bb 100644
--- a/Programs/serial_windows.c
+++ b/Programs/serial_windows.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/serial_windows.h b/Programs/serial_windows.h
index 369d571ae..3c7e84acd 100644
--- a/Programs/serial_windows.h
+++ b/Programs/serial_windows.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/service_libsystemd.c b/Programs/service_libsystemd.c
index cc82d14e6..49530f0c2 100644
--- a/Programs/service_libsystemd.c
+++ b/Programs/service_libsystemd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/service_none.c b/Programs/service_none.c
index d2ded176b..e6672b646 100644
--- a/Programs/service_none.c
+++ b/Programs/service_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/service_windows.c b/Programs/service_windows.c
index b22c6f146..0d7ed914e 100644
--- a/Programs/service_windows.c
+++ b/Programs/service_windows.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ses.c b/Programs/ses.c
index 3d68b073d..aa8b92f7d 100644
--- a/Programs/ses.c
+++ b/Programs/ses.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ses.h b/Programs/ses.h
index f9e27654f..901367324 100644
--- a/Programs/ses.h
+++ b/Programs/ses.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/spk.c b/Programs/spk.c
index 53f188155..f2d2ea3f6 100644
--- a/Programs/spk.c
+++ b/Programs/spk.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -208,7 +208,7 @@ setSpeechVolume (SpeechSynthesizer *spk, int setting, int say) {
 
   if (say) {
     sayIntegerSetting(
-      spk, gettext("volume"),
+      spk, gettext("Volume"),
       toNormalizedSpeechVolume(setting)
     );
   }
@@ -234,7 +234,7 @@ setSpeechRate (SpeechSynthesizer *spk, int setting, int say) {
 
   if (say) {
     sayIntegerSetting(
-      spk, gettext("rate"),
+      spk, gettext("Rate"),
       toNormalizedSpeechRate(setting)
     );
   }
@@ -260,7 +260,7 @@ setSpeechPitch (SpeechSynthesizer *spk, int setting, int say) {
 
   if (say) {
     sayIntegerSetting(
-      spk, gettext("pitch"),
+      spk, gettext("Pitch"),
       toNormalizedSpeechPitch(setting)
     );
   }
@@ -273,10 +273,33 @@ canSetSpeechPunctuation (SpeechSynthesizer *spk) {
   return spk->setPunctuation != NULL;
 }
 
+const char *
+getSpeechPunctuation (unsigned char level) {
+  static const char *levels[] = {
+    [SPK_PUNCTUATION_NONE] = strtext("None"),
+    [SPK_PUNCTUATION_SOME] = strtext("Some"),
+    [SPK_PUNCTUATION_MOST] = strtext("Most"),
+    [SPK_PUNCTUATION_ALL] = strtext("All"),
+  };
+
+  int maximum = ARRAY_COUNT(levels) - 1;
+  level = MAX(level, 0);
+  level = MIN(level, maximum);
+  return gettext(levels[level]);
+}
+
 int
 setSpeechPunctuation (SpeechSynthesizer *spk, SpeechPunctuation setting, int say) {
   if (!canSetSpeechPunctuation(spk)) return 0;
   logMessage(LOG_CATEGORY(SPEECH_EVENTS), "set punctuation: %d", setting);
   speechRequest_setPunctuation(spk->driver.thread, setting);
+
+  if (say) {
+    sayStringSetting(
+      spk, gettext("Punctuation"),
+      getSpeechPunctuation(setting)
+    );
+  }
+
   return 1;
 }
diff --git a/Programs/spk_base.c b/Programs/spk_base.c
index e4049319d..b9e84011c 100644
--- a/Programs/spk_base.c
+++ b/Programs/spk_base.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/spk_driver.c b/Programs/spk_driver.c
index 8c0bdfded..e3e370799 100644
--- a/Programs/spk_driver.c
+++ b/Programs/spk_driver.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/spk_input.c b/Programs/spk_input.c
index 5623aa8d8..cf77e3ab8 100644
--- a/Programs/spk_input.c
+++ b/Programs/spk_input.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/spk_input.h b/Programs/spk_input.h
index 45ea403e8..e1b84ed12 100644
--- a/Programs/spk_input.h
+++ b/Programs/spk_input.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/spk_thread.c b/Programs/spk_thread.c
index 4aab6acae..6ee99afa3 100644
--- a/Programs/spk_thread.c
+++ b/Programs/spk_thread.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/spk_thread.h b/Programs/spk_thread.h
index b938f6c8c..7616afab3 100644
--- a/Programs/spk_thread.h
+++ b/Programs/spk_thread.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/spktest.c b/Programs/spktest.c
index 8e9c2c46a..7b2ffd6c2 100644
--- a/Programs/spktest.c
+++ b/Programs/spktest.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -28,6 +28,7 @@
 
 #include "program.h"
 #include "cmdline.h"
+#include "options.h"
 #include "log.h"
 #include "spk.h"
 #include "file.h"
@@ -37,8 +38,8 @@
 static char *opt_textString;
 static char *opt_speechVolume;
 static char *opt_speechRate;
-static char *opt_pcmDevice;
-static char *opt_driversDirectory;
+char *opt_pcmDevice;
+char *opt_driversDirectory;
 
 BEGIN_OPTION_TABLE(programOptions)
   { .word = "text-string",
@@ -74,7 +75,7 @@ BEGIN_OPTION_TABLE(programOptions)
     .argument = "directory",
     .setting.string = &opt_driversDirectory,
     .internal.setting = DRIVERS_DIRECTORY,
-    .internal.adjust = fixInstallPath,
+    .internal.adjust = toAbsoluteInstallPath,
     .description = "Path to directory for loading drivers."
   },
 END_OPTION_TABLE(programOptions)
diff --git a/Programs/status.c b/Programs/status.c
index 5f7f1357b..1cb18cd58 100644
--- a/Programs/status.c
+++ b/Programs/status.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/status.h b/Programs/status.h
index c7b89dea5..125706bf4 100644
--- a/Programs/status.h
+++ b/Programs/status.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/sys_darwin.c b/Programs/sys_darwin.c
index b1ee6a398..0706afb7c 100644
--- a/Programs/sys_darwin.c
+++ b/Programs/sys_darwin.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/sys_freebsd.c b/Programs/sys_freebsd.c
index 28edecbe3..0f9bc12c1 100644
--- a/Programs/sys_freebsd.c
+++ b/Programs/sys_freebsd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/sys_kfreebsd.c b/Programs/sys_kfreebsd.c
index 28edecbe3..0f9bc12c1 100644
--- a/Programs/sys_kfreebsd.c
+++ b/Programs/sys_kfreebsd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/sys_netbsd.c b/Programs/sys_netbsd.c
index 7fb258c0c..326ebf61e 100644
--- a/Programs/sys_netbsd.c
+++ b/Programs/sys_netbsd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/sys_openbsd.c b/Programs/sys_openbsd.c
index 7fb258c0c..326ebf61e 100644
--- a/Programs/sys_openbsd.c
+++ b/Programs/sys_openbsd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/sys_solaris.c b/Programs/sys_solaris.c
index e944d97f6..22bfaefec 100644
--- a/Programs/sys_solaris.c
+++ b/Programs/sys_solaris.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/syscalls_linux.h b/Programs/syscalls_linux.h
index a94fbd6bf..3b53bdc60 100644
--- a/Programs/syscalls_linux.h
+++ b/Programs/syscalls_linux.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/system_darwin.c b/Programs/system_darwin.c
index 2aaa980ea..1a87e4397 100644
--- a/Programs/system_darwin.c
+++ b/Programs/system_darwin.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/system_java.c b/Programs/system_java.c
index 57eb4b419..5a15d3d05 100644
--- a/Programs/system_java.c
+++ b/Programs/system_java.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/system_linux.c b/Programs/system_linux.c
index 979b2255a..c08e6d01a 100644
--- a/Programs/system_linux.c
+++ b/Programs/system_linux.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -26,6 +26,7 @@
 #include <sys/stat.h>
 #include <sys/statvfs.h>
 #include <dirent.h>
+#include <sys/utsname.h>
 #include <sys/sysmacros.h>
 #include <linux/major.h>
 
@@ -41,6 +42,26 @@
 #include "system.h"
 #include "system_linux.h"
 
+int
+getKernelRelease (int *major, int *minor, int *patch) {
+  static struct utsname info = {.release[0] = 0};
+  static int majorVersion=0, minorVersion=0, patchLevel=0;
+
+  if (!info.release[0]) {
+    if (uname(&info) == -1) {
+      logSystemError("uname");
+      return 0;
+    }
+
+    sscanf(info.release, "%d.%d.%d", &majorVersion, &minorVersion, &patchLevel);
+  }
+
+  if (major) *major = majorVersion;
+  if (minor) *minor = minorVersion;
+  if (patch) *patch = patchLevel;
+  return 1;
+}
+
 typedef struct {
   PathProcessor *processor;
   const PathProcessorParameters *parameters;
diff --git a/Programs/system_msdos.c b/Programs/system_msdos.c
index 8384d68dc..d6db1a004 100644
--- a/Programs/system_msdos.c
+++ b/Programs/system_msdos.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/system_none.c b/Programs/system_none.c
index 0d21dbc87..a8eb7b697 100644
--- a/Programs/system_none.c
+++ b/Programs/system_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/system_windows.c b/Programs/system_windows.c
index 168ddf978..1af373fec 100644
--- a/Programs/system_windows.c
+++ b/Programs/system_windows.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -184,9 +184,17 @@ setLocale (void) {
     }
   }
 
-  char *locale = getWindowsLocaleName();
-  setMessagesLocale(locale);
-  if (locale) free(locale);
+#if defined(__MINGW32__)
+  {
+    char *locale = getWindowsLocaleName();
+
+    if (locale) {
+      setMessagesLocale(locale);
+      free(locale);
+      return;
+    }
+  }
+#endif /* defined(__MINGW32__) */
 }
 
 void
diff --git a/Programs/tbl2hex.c b/Programs/tbl2hex.c
index d9a69e87e..f03f409e6 100644
--- a/Programs/tbl2hex.c
+++ b/Programs/tbl2hex.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/thread.c b/Programs/thread.c
index cba5154f7..ca863b820 100644
--- a/Programs/thread.c
+++ b/Programs/thread.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/timing.c b/Programs/timing.c
index 2e7800b77..e3b780721 100644
--- a/Programs/timing.c
+++ b/Programs/timing.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ttb_compile.c b/Programs/ttb_compile.c
index bcf898264..0ecd79171 100644
--- a/Programs/ttb_compile.c
+++ b/Programs/ttb_compile.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ttb_compile.h b/Programs/ttb_compile.h
index 0db5361fc..8257215f4 100644
--- a/Programs/ttb_compile.h
+++ b/Programs/ttb_compile.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ttb_gnome.c b/Programs/ttb_gnome.c
index 637103fac..929d2c29c 100644
--- a/Programs/ttb_gnome.c
+++ b/Programs/ttb_gnome.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ttb_internal.h b/Programs/ttb_internal.h
index 051383d34..3cf9ef3ec 100644
--- a/Programs/ttb_internal.h
+++ b/Programs/ttb_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ttb_louis.c b/Programs/ttb_louis.c
index 080ec4c65..51e0bfadc 100644
--- a/Programs/ttb_louis.c
+++ b/Programs/ttb_louis.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ttb_native.c b/Programs/ttb_native.c
index 8d6f83b08..c5503d1cc 100644
--- a/Programs/ttb_native.c
+++ b/Programs/ttb_native.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/ttb_translate.c b/Programs/ttb_translate.c
index 2e8f4e030..344ec35bc 100644
--- a/Programs/ttb_translate.c
+++ b/Programs/ttb_translate.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/tune.c b/Programs/tune.c
index d06f1c49a..f923dd157 100644
--- a/Programs/tune.c
+++ b/Programs/tune.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/tune_builder.c b/Programs/tune_builder.c
index 178cfe15c..5fb75e5a4 100644
--- a/Programs/tune_builder.c
+++ b/Programs/tune_builder.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/tune_utils.c b/Programs/tune_utils.c
index 869996ac8..e9a02b1e2 100644
--- a/Programs/tune_utils.c
+++ b/Programs/tune_utils.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/unicode.c b/Programs/unicode.c
index d2038b7e0..45e43be29 100644
--- a/Programs/unicode.c
+++ b/Programs/unicode.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/update.c b/Programs/update.c
index 9c3caf3c9..a72d6a1e7 100644
--- a/Programs/update.c
+++ b/Programs/update.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -44,6 +44,7 @@
 #include "blink.h"
 #include "routing.h"
 #include "api_control.h"
+#include "options.h"
 #include "core.h"
 
 static void
@@ -1097,8 +1098,10 @@ doUpdate (void) {
   if (scr.unreadable) {
     logMessage(LOG_CATEGORY(UPDATE_EVENTS), "screen unreadable: %s", scr.unreadable);
   } else {
-    logMessage(LOG_CATEGORY(UPDATE_EVENTS), "screen: #%d %dx%d [%d,%d]",
-               scr.number, scr.cols, scr.rows, scr.posx, scr.posy);
+    logMessage(LOG_CATEGORY(UPDATE_EVENTS),
+      "screen: #%d %dx%d [%d,%d] scq:%u",
+      scr.number, scr.cols, scr.rows, scr.posx, scr.posy, scr.quality
+    );
   }
 
   if (opt_releaseDevice) {
diff --git a/Programs/update.h b/Programs/update.h
index 3a930c740..1dfbf14c1 100644
--- a/Programs/update.h
+++ b/Programs/update.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb.c b/Programs/usb.c
index b2409c2d9..308c6b0ff 100644
--- a/Programs/usb.c
+++ b/Programs/usb.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_adapters.c b/Programs/usb_adapters.c
index b22342763..76a92f7b7 100644
--- a/Programs/usb_adapters.c
+++ b/Programs/usb_adapters.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_adapters.h b/Programs/usb_adapters.h
index 31263e704..cbb1789e1 100644
--- a/Programs/usb_adapters.h
+++ b/Programs/usb_adapters.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_android.c b/Programs/usb_android.c
index c290e9778..833e8309e 100644
--- a/Programs/usb_android.c
+++ b/Programs/usb_android.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_belkin.c b/Programs/usb_belkin.c
index 035f5760b..76a290037 100644
--- a/Programs/usb_belkin.c
+++ b/Programs/usb_belkin.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_belkin.h b/Programs/usb_belkin.h
index f169643e3..af8e3d557 100644
--- a/Programs/usb_belkin.h
+++ b/Programs/usb_belkin.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_bsd.h b/Programs/usb_bsd.h
index 1ed1ee3ce..10578e31b 100644
--- a/Programs/usb_bsd.h
+++ b/Programs/usb_bsd.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_cdc_acm.c b/Programs/usb_cdc_acm.c
index e09da47b2..55818956c 100644
--- a/Programs/usb_cdc_acm.c
+++ b/Programs/usb_cdc_acm.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_cdc_acm.h b/Programs/usb_cdc_acm.h
index 6a64d0757..f718811c0 100644
--- a/Programs/usb_cdc_acm.h
+++ b/Programs/usb_cdc_acm.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_ch341.c b/Programs/usb_ch341.c
index 9ed52d040..303833cb1 100644
--- a/Programs/usb_ch341.c
+++ b/Programs/usb_ch341.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_ch341.h b/Programs/usb_ch341.h
index 9b715e991..85279f9dd 100644
--- a/Programs/usb_ch341.h
+++ b/Programs/usb_ch341.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_cp2101.c b/Programs/usb_cp2101.c
index f2c378ce8..acf355cd3 100644
--- a/Programs/usb_cp2101.c
+++ b/Programs/usb_cp2101.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_cp2101.h b/Programs/usb_cp2101.h
index 29f1d4f67..ea4f8b740 100644
--- a/Programs/usb_cp2101.h
+++ b/Programs/usb_cp2101.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_cp2110.c b/Programs/usb_cp2110.c
index 3100d94cf..a569af638 100644
--- a/Programs/usb_cp2110.c
+++ b/Programs/usb_cp2110.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_cp2110.h b/Programs/usb_cp2110.h
index ef6a0a961..3bd0bae83 100644
--- a/Programs/usb_cp2110.h
+++ b/Programs/usb_cp2110.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_darwin.c b/Programs/usb_darwin.c
index e716e0185..ae754f138 100644
--- a/Programs/usb_darwin.c
+++ b/Programs/usb_darwin.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_devices.c b/Programs/usb_devices.c
index bf0bf618e..c923ac1d8 100644
--- a/Programs/usb_devices.c
+++ b/Programs/usb_devices.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_devices.h b/Programs/usb_devices.h
index 57bde3bba..5776abb90 100644
--- a/Programs/usb_devices.h
+++ b/Programs/usb_devices.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_freebsd.c b/Programs/usb_freebsd.c
index 2d3316cc6..b42da2399 100644
--- a/Programs/usb_freebsd.c
+++ b/Programs/usb_freebsd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_ftdi.c b/Programs/usb_ftdi.c
index 0c203d473..e55ab3eb0 100644
--- a/Programs/usb_ftdi.c
+++ b/Programs/usb_ftdi.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_ftdi.h b/Programs/usb_ftdi.h
index 7fda9e599..1d638416c 100644
--- a/Programs/usb_ftdi.h
+++ b/Programs/usb_ftdi.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_grub.c b/Programs/usb_grub.c
index 9db14e8fc..e4ab00eed 100644
--- a/Programs/usb_grub.c
+++ b/Programs/usb_grub.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_hid.c b/Programs/usb_hid.c
index ccf0ba9ca..39688937a 100644
--- a/Programs/usb_hid.c
+++ b/Programs/usb_hid.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_internal.h b/Programs/usb_internal.h
index 49c682c66..3ee712e5d 100644
--- a/Programs/usb_internal.h
+++ b/Programs/usb_internal.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_kfreebsd.c b/Programs/usb_kfreebsd.c
index 75b67451a..c611d804e 100644
--- a/Programs/usb_kfreebsd.c
+++ b/Programs/usb_kfreebsd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_libusb-1.0.c b/Programs/usb_libusb-1.0.c
index 2f0b46ea8..00b788ed2 100644
--- a/Programs/usb_libusb-1.0.c
+++ b/Programs/usb_libusb-1.0.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_libusb.c b/Programs/usb_libusb.c
index 590f82493..e45590cf5 100644
--- a/Programs/usb_libusb.c
+++ b/Programs/usb_libusb.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_linux.c b/Programs/usb_linux.c
index f796d560c..bd5f8ce24 100644
--- a/Programs/usb_linux.c
+++ b/Programs/usb_linux.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -426,10 +426,17 @@ usbReapURB (UsbDevice *device, int wait) {
         if ((endpoint = usbGetEndpoint(device, urb->endpoint))) {
           UsbEndpointExtension *eptx = endpoint->extension;
 
+          switch (USB_ENDPOINT_DIRECTION(endpoint->descriptor)) {
+            case UsbEndpointDirection_Input:
+              deleteItem(endpoint->direction.input.pending.requests, urb);
+              break;
+          }
+
           if (enqueueItem(eptx->completedRequests, urb)) return endpoint;
           logSystemError("USB completed request enqueue");
-          free(urb);
         }
+
+        free(urb);
       } else {
         errno = EAGAIN;
       }
@@ -955,8 +962,6 @@ usbReadDeviceDescriptor (UsbDevice *device) {
 
 static int
 usbHandleInputURB (UsbEndpoint *endpoint, struct usbdevfs_urb *urb) {
-  deleteItem(endpoint->direction.input.pending.requests, urb);
-
   if (urb->actual_length < 0) {
     usbLogInputProblem(endpoint, "data not available");
     return 0;
diff --git a/Programs/usb_netbsd.c b/Programs/usb_netbsd.c
index 196bd5f9b..816653ee6 100644
--- a/Programs/usb_netbsd.c
+++ b/Programs/usb_netbsd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_none.c b/Programs/usb_none.c
index 9db14e8fc..e4ab00eed 100644
--- a/Programs/usb_none.c
+++ b/Programs/usb_none.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_openbsd.c b/Programs/usb_openbsd.c
index 196bd5f9b..816653ee6 100644
--- a/Programs/usb_openbsd.c
+++ b/Programs/usb_openbsd.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_serial.c b/Programs/usb_serial.c
index bd23a82ad..3c558232a 100644
--- a/Programs/usb_serial.c
+++ b/Programs/usb_serial.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_serial.h b/Programs/usb_serial.h
index 654bac300..47dbf5a53 100644
--- a/Programs/usb_serial.h
+++ b/Programs/usb_serial.h
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_solaris.c b/Programs/usb_solaris.c
index 13d0a09fc..0d1d085f9 100644
--- a/Programs/usb_solaris.c
+++ b/Programs/usb_solaris.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/usb_winusb.c b/Programs/usb_winusb.c
index 9c4a987db..2130f7c5b 100644
--- a/Programs/usb_winusb.c
+++ b/Programs/usb_winusb.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/utf8.c b/Programs/utf8.c
index a6431ed32..c88e2073f 100644
--- a/Programs/utf8.c
+++ b/Programs/utf8.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/variables.c b/Programs/variables.c
index 6fc537165..20d9b671a 100644
--- a/Programs/variables.c
+++ b/Programs/variables.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/xbrlapi.c b/Programs/xbrlapi.c
index 92c45c2e5..6745d6a99 100644
--- a/Programs/xbrlapi.c
+++ b/Programs/xbrlapi.c
@@ -1,7 +1,7 @@
 /*
  * XBrlAPI - A background process tinkering with X for proper BrlAPI behavior
  *
- * Copyright (C) 2003-2024 by Samuel Thibault <Samuel.Thibault@ens-lyon.org>
+ * Copyright (C) 2003-2025 by Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *
  * XBrlAPI comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Programs/xsel.c b/Programs/xsel.c
index ce04083e2..96c7c92ed 100644
--- a/Programs/xsel.c
+++ b/Programs/xsel.c
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 2019-2024 by Samuel Thibault <Samuel.Thibault@ens-lyon.org>
+ * Copyright (C) 2019-2025 by Samuel Thibault <Samuel.Thibault@ens-lyon.org>
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/README b/README
index 73055c0c3..b78a5c55b 100644
--- a/README
+++ b/README
@@ -2,9 +2,9 @@ BRLTTY is a background process (daemon) providing access to the Linux/Unix
 console (when in text mode) for a blind person using a refreshable braille
 display.
 
-Version 6.6, Jul 2023
+Version 6.7, Oct 2024
 
-Copyright (C) 1995-2024 by The BRLTTY Developers.
+Copyright (C) 1995-2025 by The BRLTTY Developers.
 
 Web Page: http://brltty.app/
 
diff --git a/Tables/Attributes/invleft_right.atb b/Tables/Attributes/invleft_right.atb
index 7491fe46a..4528a7a28 100644
--- a/Tables/Attributes/invleft_right.atb
+++ b/Tables/Attributes/invleft_right.atb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Attributes/left_right.atb b/Tables/Attributes/left_right.atb
index beac1111f..3d65d2068 100644
--- a/Tables/Attributes/left_right.atb
+++ b/Tables/Attributes/left_right.atb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Attributes/upper_lower.atb b/Tables/Attributes/upper_lower.atb
index 87cfde925..ef309ea66 100644
--- a/Tables/Attributes/upper_lower.atb
+++ b/Tables/Attributes/upper_lower.atb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/af.ctb b/Tables/Contraction/af.ctb
index 296d8ffbe..53c0fb6ca 100644
--- a/Tables/Contraction/af.ctb
+++ b/Tables/Contraction/af.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/am.ctb b/Tables/Contraction/am.ctb
index 675eaadbc..336ec591e 100644
--- a/Tables/Contraction/am.ctb
+++ b/Tables/Contraction/am.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/countries.cti b/Tables/Contraction/countries.cti
index 2d7bc8e0b..2c877096f 100644
--- a/Tables/Contraction/countries.cti
+++ b/Tables/Contraction/countries.cti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/de-1998.ctb b/Tables/Contraction/de-1998.ctb
index bec00b6a7..86830a418 100644
--- a/Tables/Contraction/de-1998.ctb
+++ b/Tables/Contraction/de-1998.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/de-2015.ctb b/Tables/Contraction/de-2015.ctb
index c2664def2..656cc7cbc 100644
--- a/Tables/Contraction/de-2015.ctb
+++ b/Tables/Contraction/de-2015.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -22,9 +22,7 @@
 include de-g1.ctb
 
 class b b
-class e e
 class f f
-class g g
 class h h
 class i i
 class m m
@@ -58,6 +56,8 @@ before g always aussagenklän 16-234-234-1245-14-13-123-345-1345
 before s always aus 16-234
 
 before t sufword aus 16-234
+always austerität 16-23456-12456-5-345
+always austern 16-23456-12456-1345
 
 # Ausnahmen für Vokalgruppen aus de-g1.ctb
 before e always arteri 356-2345-12456-24
@@ -73,8 +73,6 @@ always prämier 1234-1235-345-134-346-1235
 always propriet 12345-1234-1235-24-15-2345 proprietär shouldn't use the ie-contraction
 endword serie 234-12456-24-15
 always spezies 234-1234-15-1356-24-123456 shouldn't use the ie-contraction
-always tragödie =
-always tragödien 2345-1235-1-1245-246-145-24-14
 
 # Due to their low usage frequency in typical german text the letters
 # c, q, x and y are reused for the en-, ll-, ex/mm/nis- and el-contractions.
@@ -107,23 +105,43 @@ always kohleintopf 13-135-125-123-1246-2345-135-1234-124
 always kohleintöpf 13-135-125-123-1246-2345-246-1234-124
 before g always kohleinla 13-135-125-123-1246-123-1
 before e always kohleul 13-135-125-123-126-123 ⠨⠅⠕⠓⠇⠣⠇⠉
+
 always ein 1246
 always einnen 15-35-1345-14 ⠨⠯⠓⠌⠎⠑⠔⠝⠉⠎⠩⠦ ⠨⠯⠓⠌⠎⠑⠔⠝⠉⠞⠷⠏⠻⠁⠞⠥⠗ ⠨⠧⠊⠵⠑⠔⠝⠉⠍⠔⠊⠾⠻
 always lateinisch 123-1-2345-1246-24-156 shouldn't use the ein-contraction
+always eillustration 15-24-12345-136-23456-1235-5-1345
+always eillustrier 15-24-12345-136-23456-1235-346-1235
+always einformation 15-35-124-26-134-5-1345
+always einitiativ 15-35-24-2345-24-5-1236
+before t always einstrumen 15-35-23456-1235-136-134-14
+always eintoleranz 15-35-2345-135-123-12456-235-1356
+
 always el 13456
 begmidword elineal 15-123-35-15-25
 endword elineal 15-123-35-15-1-123
 always eleist 15-123-146-23456
+
 always em 12356
 always emach 15-134-56
 before e always emachs 12356-56-234 Systemachse
+always emagazin 15-134-1-1245-1-1356-35
+always emanagement 15-134-235-1-12346-134-14-2345
+always emedizin 15-134-15-145-24-1356-35
+
 always en 14
 always denunz 145-15-1345-256-1356 shouldn't use the en-contraction
 always er 12456
+always eregister 15-1235-15-1245-24-23456-12456
+always eregistr 15-1235-15-1245-24-23456-1235
+always derealis 145-15-1235-15-25-24-234
 always dereferenzier 145-15-1235-15-124-12456-14-1356-346-1235 shouldn't use the er-contraction
-always deregulier 145-15-1235-15-1245-136-123-346-1235 shouldn't use the er-contraction
+always deregul 145-15-1235-15-1245-136-123 shouldn't use the er-contraction
+
 always es 123456
+always esammlung 15-234-1-1346-123-136
+
 always ge 12346
+sufword gerst 1245-12456-23456
 prfword gehe 1245-2356-15
 prfword gehen 1245-2356-14
 prfword gehend 1245-2356-14-145
@@ -161,9 +179,28 @@ always vorgehen 2-26-1245-2356-14
 always vorgehst 2-26-1245-2356-23456
 always vorgeht 2-26-1245-2356-2345
 always weitgehen 2456-2345-1245-2356-14
-always zugehen 2-1356-1245-2356-14
-always zugehst 2-1356-1245-2356-23456
-always zugeht 2-1356-1245-2356-2345
+
+always geinbau 1245-1246-12-16
+always geinblick 1245-1246-12-123-24-46
+always geinfahr 1245-1246-2-1235
+always geinheit 1245-1246-125
+always geinnahm 1245-1246-1345-134
+always geinricht 1245-1246-2-3456
+always geinsatz 1245-1246-234-1356
+always geinsätz 1245-1246-5-234-1356
+always geinsamkeit 1245-1246-2346-13
+always geinschlag 1245-1246-156-1245
+always geinschläg 1245-1246-5-156-1245
+before t always geinschnit 1245-1246-156-1345-24-2345
+always geinstell 1245-1246-2-13456
+always geinstuf 1245-1246-23456-136-124
+always geintrag 1245-1246-2345-1245
+always geinträg 1245-1246-5-2345-1245
+always geinwirk 1245-1246-2456-13
+always gelektro 1245-13456-15-13-2345-1235-135
+
+
+
 
 
 
@@ -174,9 +211,14 @@ before konsonant always ben 12-14
 before konsonant always ber 12-12456
 before konsonant always gel 1245-13456 klingelton shouldn't use the ge-contraction
 before konsonant always gen 1245-14
+always genetik 1245-14-15-2345-24-13
+always genetisch 1245-14-15-2345-24-156
+always halogen 125-25-135-1245-14
 begword lungen 123-256-1245-14 shouldn't use the ge-contraction
 begword magen 134-1-1245-14 shouldn't use the ge-contraction
 before konsonant always ten 2345-14
+always piraten 1234-24-1235-1-2345-14
+always piraterie 1234-24-1235-1-2345-12456-346
 always elefant 13456-15-124-235-2345
 before konsonant always ter 2345-12456
 always güter 1245-1256-2345-12456 should use the er-contraction
@@ -194,22 +236,10 @@ always bodenlicht 12-135-145-14-123-3456-2345 shouldn't use the lich-contraction
 begword see =
 begword neusee 1345-126-234-15-15
 #before konsonant always seen 234-15-14
-word seele 234-15-13456-15
-sufword seelen 234-15-13456-14
-always seelisch 234-15-13456-24-156
-word teer 2345-15-12456
-sufword teerartig 2345-15-12456-356-2345-45
-before konsonant begword teer 2345-15-12456
-word teere 2345-15-12456-15
-word teeren 2345-15-12456-14
-word teerend 2345-15-12456-14-145
-word teerende 2345-15-12456-14-145-15
-word teerendem 2345-15-12456-14-145-12356
-word teerenden 2345-15-12456-14-145-14
-word teerender 2345-15-12456-14-145-12456
-word teerendes 2345-15-12456-14-145-123456
-word teerung 2345-15-12456-136
-word teerungen 2345-15-12456-136-14
+prfword seele 234-15-15-123-15
+prfword seelen 234-15-15-123-14
+sufword seelen 234-15-15-123-14
+always seelisch 234-15-15-123-24-156
 always teelich 2345-15-15-456 shouldn't use the el-contraction
 always teelöffel 2345-15-15-123-246-124-124-13456 shouldn't use the el-contraction
 always teemaschin 2345-15-15-134-156 shouldn't use the em-contraction
@@ -229,6 +259,7 @@ always schip 234-1456-24-1234
 always schippe 156-24-1234-1234-15
 always schippen 156-24-1234-1234-14
 always schipper 156-24-1234-1234-12456
+always schristen 234-1456-1235-24-23456-14
 after konsonant midword ss =
 after konsonant midendword ssatz 234-234-1356
 after konsonant midendword ssätz 234-5-234-1356
@@ -236,7 +267,9 @@ after konsonant midendword ssaetz 234-5-234-1356
 after konsonant endword sserie 234-234-12456-24-15
 after konsonant endword sserien 234-234-12456-24-14
 after konsonant midword ssch 234-156
+always sschablon 234-156-1-12-123-135-1345
 always sschicht 234-156-3456-2345
+always sschild 234-156-24-123-145
 always sschlag 234-156-1245
 always sschläg 234-5-156-1245
 always sschlaeg 234-5-156-1245
@@ -259,6 +292,7 @@ always ssolch 234-234-1456
 after konsonant midendword ssoll 234-2-234
 always ssondern 234-234-1345
 always ssozial 234-234-123
+always sstruktur 234-23456-1235-136-13-2345-136-1235
 always espiel 15-2-346
 always sspiel 234-2-346
 always esspiel 123456-2-346
@@ -284,14 +318,19 @@ always un 256
 
 midendword tei 2345-146
 midendword tein 2345-1246
+always telektro 2345-13456-15-13-2345-1235-135
+before t always telemen 2345-13456-15-134-14
+
 
 always all 1-12345
 always ell 15-12345
 always emm 15-1346
 always esch 15-156
+always eschließ 15-156-2346
 always eschreib 15-156-12
 always eschrift 15-156-2345
 always eschwierig 15-156-45
+always esendung 15-234-14-145-136
 always ess 15-2346
 always est 15-23456
 
@@ -313,6 +352,7 @@ endword tene 2345-14-15
 always ttel 2345-2345-13456 shouldn't use the te-contraction
 always tten 2345-2345-14 shouldn't use the te-contraction
 always tter 2345-2345-12456 shouldn't use the te-contraction
+always aorten 1-26-2345-14
 always daten 145-1-2345-14 
 always karten 13-356-2345-14
 midendword maten 134-1-2345-14 shouldn't use the te-contraction
@@ -324,6 +364,8 @@ endword tenes 2345-14-123456
 endword tens 2345-14-234
 endword ter 2345-12456
 endword tere 2345-12456-15
+endword terei 2345-12456-146
+endword tereien 2345-12456-146-14
 endword terem 2345-12456-12356
 endword teren 2345-12456-14
 endword terer 2345-12456-12456
@@ -383,11 +425,15 @@ endword bern 12-12456-1345 shouldn't use the be-contraction
 endword bers 12-12456-234 shouldn't use the be-contraction
 always ober 135-12-12456 shouldn't use the be-contraction
 endword bes 12-123456 shouldn't use the be-contraction
+prfword besen 12-123456-14
+prfword besens 12-123456-14-234
+
 
 always begeh 23-1245-2356 shouldn't use the ge-contraction
 always getriebegehäus 12346-2345-1235-346-23-12346-125-34-234 shouldn't use the eh-contraction
 always getriebegehaeus 12346-2345-1235-346-23-12346-125-34-234 shouldn't use the eh-contraction
 always geig 1245-146-1245 should use the ei-contraction
+prfword geige 1245-146-12346
 always geisel 1245-146-234-13456 shouldn't use the ge-contraction
 always geist 1245-146-23456
 prfword gel 1245-13456 shouldn't use the ge-contraction
@@ -405,6 +451,10 @@ prfword gen 1245-14 shouldn't use the ge-contraction
 midendword gend 1245-14-145 shouldn't use the ge-contraction
 endword gens 1245-14-234 shouldn't use the ge-contraction
 midendword ger 1245-12456 should use er-contraction if not part of a word intro
+always gerinnsel 12346-1235-35-1345-234-13456
+always gerinnung 12346-1235-35-1345-136
+always geripp 12346-1235-24-1234-1234
+
 before r begword abge 1-12-12346
 before r begword ange 235-12346
 word anger 235-1245-12456
@@ -415,7 +465,7 @@ before r begmidword aufge 2-16-12346
 before r begmidword ausge 16-234-12346
 before r begmidword einge 1246-12346
 begword unger 256-12346-1235
-sufword ungerecht 256-12346-1235-2345
+always ungerecht 256-12346-1235-2345
 always gerieben 12346-1235-346-12-14 should use the ge-contraction
 sufword zuge 2-1356-12346
 endword ges 1245-123456 shouldn't use the ge-contraction
@@ -453,7 +503,18 @@ begword ex 1346
 begword pro 12345
 begword ver 36
 word verb 1236-12456-12
+word verben 1236-12456-12-14
+sufword verbendstell 1236-12456-12-14-145-2-13456
+sufword verbendung 1236-12456-12-14-145-136
 word vers 1236-12456-234
+word verbal 1236-12456-12-1-123
+begword verbal 1236-12456-12-25
+begword verballer 36-12-1-12345-12456
+begword verballhorn 1236-12456-12-1-12345-125-26-1345
+before st begword verbeul 36-12-126-123
+sufword verifikation 1236-12456-24-124-24-13-5-1345
+sufword verifizier 1236-12456-24-124-24-1356-346-1235
+sufword version 1236-12456-234-24-135-1345
 
 #begword auspiz 16-234-1234-24-1356 shouldn't use the aus-contraction
 word ente 14-236 shouldn't use the ent-contraction
@@ -465,7 +526,15 @@ word vertikal 1236-12456-2345-24-13-1-123 shouldn't use the ver-contraction
 
 # Nachsilbenkürzungen
 endword falls 124
-endword unfalls 256-124-12345-234
+endword ausfalls 16-234-124-12345-234
+endword befalls 23-124-12345-234
+prfword beifalls 2-12-124-12345-234
+prfword einfalls 1246-124-12345-234
+prfword rückfalls 1235-46-124-12345-234
+prfword überfalls 2-1256-124-12345-234
+prfword unfalls 256-124-12345-234
+endword ungsfalls 136-234-124-12345-234
+endword zerfalls 1356-12456-124-12345-234
 
 midendword heit 125
 before s midword heits 125-234
@@ -487,6 +556,7 @@ sufword gemal 12346-134-25 gemalt shouldn't use the mal-contraction
 
 midendword nis 1346
 always adonis =
+always harmonisch 125-356-134-135-1345-24-156
 always kolonis =
 always kolonist 13-135-123-135-1345-24-23456
 always kolonistisch 13-135-123-135-1345-5-156
@@ -496,20 +566,98 @@ before s always resynchroni 1235-15-234-6-13456-1345-1456-1235-135-1345-24
 always männisch 134-345-1345-1345-24-156
 always nisier 1345-24-234-346-1235 technisierung shouldn't use -nis
 
+always nischkennt 1345-24-156-13-14-1345-2345
+always nischkurs 1345-24-156-13-136-1235-234
+always nischsprach 1345-24-156-234-1234-1235-56
+always nischunter 1345-24-156-2-256
+
+always chronist 1456-1235-135-1345-24-23456
+always chronistisch 1456-1235-135-1345-5-156
+always einnist 1246-1345-24-23456
+always feminist 124-12356-35-24-23456
+always feministisch 124-12356-35-5-156
+always frankoromanist 124-1235-235-13-135-1235-135-134-235-24-23456
+always frankoromanistisch 124-1235-235-13-135-1235-135-134-235-5-156
+always iberoromanist 24-12-12456-135-1235-135-134-235-24-23456
+always iberoromanistisch 24-12-12456-135-1235-135-134-235-5-156
+always impressionist 24-134-1234-1235-15-2346-24-135-1345-24-23456
+always impressionistisch 24-134-1234-1235-15-2346-24-135-1345-5-156
+
+always nisolation 1345-24-234-135-123-5-1345
+endword nisolator 1345-24-234-135-123-1-2345-135-1235
+midword nisolator 1345-24-234-135-123-1-2345-26
+always nisolier 1345-24-234-135-123-346-1235
+
 midendword sam 2346
-sufword balsam 12-25-234-1-134
+midendword sambition =
+midendword samplitud =
+sufword ansam 235-234-1-134
+sufword ansamm 235-234-1-1346
+always besamung 23-234-1-134-136
+begword gesam 12346-234-1-134 shouldn't use the sam-contraction
+begword gesamm 12346-234-1-1346 shouldn't use the sam-contraction
+midendword samariter 234-1-134-356-24-2345-12456
+midendword sammel 234-1-1346-13456 shouldn't use the sam-contraction
+always samml 234-1-1346-123 shouldn't use the sam-contraction
+sufword sesam 234-123456-1-134 shouldn't use the sam-contraction
+always disambiguier 145-24-234-1-134-12-45-136-346-1235 shouldn't use the sam-contraction
+sufword einsamig 1246-234-1-134-45
+always ahornsamen 1-125-26-1345-234-1-134-14
+always ampfersamen 1-134-1234-124-12456-234-1-134-14
+always anissamen 235-24-234-234-1-134-14
+always bärlappsamen 12-345-1235-123-1-1234-1234-234-1-134-14
+always bananensamen 12-235-235-14-234-1-134-14
+always baumsamen 12-16-134-234-1-134-14
+always baumwollsamen 12-16-134-2-135-234-1-134-14
+always birkensamen 12-24-1235-13-14-234-1-134-14
+always bohnensamen 12-135-125-1345-14-234-1-134-14
+always cannabissamen 6-14-235-1345-1-12-24-234-234-1-134-14 shouldn't use the bis-, ss- and sam-contractions
+always chiasamen 1456-24-1-234-1-134-14
+always chilisamen 1456-24-123-24-234-1-134-14
+always dattelsamen 145-1-2345-2345-13456-234-1-134-14
+always erbsensamen 12456-12-234-14-234-1-134-14
+always fenchelsamen 124-14-1456-13456-234-1-134-14
+always fichtensamen 124-3456-2345-14-234-1-134-14
+always gartensamen 1245-356-2345-14-234-1-134-14
+always gemüsesamen 12346-134-1256-234-15-234-1-134-14
+always getreidesamen 12346-2345-1235-146-145-15-234-1-134-14
+always grassamen 1245-1235-1-234-234-1-134-14
+always gurkensamen 1245-136-1235-13-14-234-1-134-14
+always hanfsamen 125-235-124-234-1-134-14
+always kakaosamen 13-1-13-1-135-234-1-134-14
+always karottensamen 13-356-135-2345-2345-14-234-1-134-14
+always kiefernsamen 13-346-124-12456-1345-234-1-134-14
+always kleesamen 13-123-15-15-234-1-134-14
+always kornsamen 13-26-1345-234-1-134-14
+always kümmelsamen 13-1256-1346-13456-234-1-134-14
+always kürbissamen 13-1256-1235-12-24-234-234-1-134-14
+always leinsamen 123-1246-234-1-134-14
+always linsensamen 123-35-234-14-234-1-134-14
+always mohnsamen 134-135-125-1345-234-1-134-14
+always möhrensamen 134-246-125-1235-14-234-1-134-14
+always pflanzensamen 1234-124-123-235-1356-14-234-1-134-14
+always senfsamen 234-14-124-234-1-134-14
+always tomatensamen 234-135-134-1-2345-14-234-1-134-14
+always weidensamen 2456-146-145-14-234-1-134-14
+prfword samens 234-1-134-14-234
+always balsam 12-25-234-1-134
 sufword besam 23-234-1-134
+sufword besamm 23-234-1-1346
 sufword bisam =
 always bischofsamt 12-24-156-135-124-234-1-134-2345 shouldn't use the sam-contraction
-always beisammen 2-146-234-1-1346-14
+always beisammen 2-12-234-1-1346-14
 
 
 midendword schaft 156
 
 midendword ung 136
+always bungalow 12-256-1245-25-135-2456
 always dschungel 145-156-256-1245-13456 shouldn't use the ung-contraction
+always drungen 145-1235-256-1245-14
+sufword dung 145-256-1245
 always geklungen 12346-13-123-256-1245-14
 always gelungen 12346-123-256-1245-14
+always riegelung 1235-346-1245-13456-136
 always gesungen 12346-234-256-1245-14
 before g always bezwun 23-1356-2456-256
 before g always erzwun 12456-1356-2456-256
@@ -521,6 +669,7 @@ always ungenau 256-12346-1345-16
 always ungeheuer 256-12346-125-126-12456
 always schwung 156-2456-256-1245 shouldn't use the ung-contraction
 always sprung 234-1234-1235-256-1245 shouldn't use the ung-contraction
+always ssprung 234-234-1234-1235-256-1245
 
 
 endword wärts 2456
@@ -532,6 +681,7 @@ midendword ativ 5-1236
 #always religion 1235-13456-45-245
 midendword ismus 5-24
 midendword istisch 5-156
+always atheistisch 1-2345-125-15-5-156
 endword nismus 1345-5-24 shouldn't use the nis-contraction
 midendword nistisch 1345-5-156
 midendword ität 5-345
@@ -552,7 +702,6 @@ sufword erheiter 12456-125-146-2345-12456 shouldn't use the heit-contraction
 prfword formal 124-26-134-1-123 shouldn't use the mal-contraction
 begword formal 124-26-134-25 shouldn't use the mal-contraction
 word firnis = shouldn't use the nis-contraction
-begword gesam 12346-234-1-134 shouldn't use the sam-contraction
 always herrschaft 1235-1235-156-1-124-2345 can not use the shaft-contraction
 always hoheit 125-135-125-146-2345 shouldn't use the heit-contraction
 always kuhdung 13-136-125-145-256-1245 shouldn't use the ung-contraction
@@ -657,8 +806,46 @@ prfword laufes 123-16-124-123456
 prfword laufs 123-16-124-234
 prfword laufst 123-16-124-23456
 prfword lauft 123-16-124-2345
+always lauffläch 123-16-124-124-123-345-1456
+always laufkäfer 123-16-124-13-345-124-12456
+always laufzahl 123-16-124-1356-123
+always laufzeit 123-16-124-1356-2345
+always ablauf 1-12-123-16-124 shouldn't use the auf-contraction
+always apfellauf 1-1234-124-13456-123-16-124
+always bandlauf 12-235-145-123-16-124
+always bachlauf 12-56-123-16-124
+always bahnlauf 12-1-125-1345-123-16-124
+always berglauf 12-12456-1245-123-16-124
+always bildlauf 12-24-123-145-123-16-124
+always drucklauf 145-46-123-16-124
+always einlauf 1246-123-16-124
+always einzellauf 1246-1356-13456-123-16-124
+sufword entlauf 2346-123-16-124
+always erstlauf 12456-23456-123-16-124
+always feuerlauf 124-126-12456-123-16-124
+always flusslauf 124-123-136-2346-123-16-124
+always gleichlauf 1245-1456-123-16-124
+always handlauf 125-145-123-16-124
+always kunstlauf 13-256-23456-123-16-124
+always lebenslauf 123-12-14-234-123-16-124
+always leerlauf 123-15-15-1235-123-16-124
+always leichtlauf 123-1456-123-16-124
+always mehrlauf 2-2356-123-16-124
+always notlauf 1345-135-2345-123-16-124
+always schnelllauf 156-1345-15-12345-123-16-124
+always suchlauf 234-136-1456-123-16-124
+always unterlauf 2-256-123-16-124
+always volkslauf 1236-13-234-123-16-124
 always gelaufen 12346-123-16-124-14
 always schlauf 156-123-16-124 shouldn't use the auf-contraction
+always schnauf 156-1345-16-124 shouldn't use the auf-contraction
+always ausrauf 16-234-1235-16-124
+prfword taufe 2345-16-124-15
+prfword taufen 2345-16-124-14
+before t always auforma 16-124-26-134-1
+always aufrequenz 16-124-1235-15-6-12345-136-14-1356
+
+
 always abfragerate 1-12-124-1235-1-12346-1235-1-236 shouldn't use the er-contraction
 always abfrageraten 1-12-124-1235-1-12346-1235-1-2345-14
 always abgelauf 1-12-12346-123-16-124
@@ -675,13 +862,16 @@ always aufertig 16-124-45
 always aufolg 16-124-1245
 always auführ 16-124-125
 always eislauf 146-234-123-16-124
-always laufzahl 123-16-124-1356-123
 
 
 word bei 12
 always bei 2-12
 always beizung 12-146-1356-136 shouldn't use the bei-contraction
 always beiß 12-146-6-2346 shouldn't use the bei-contraction
+prfword beil 12-146-123
+prfword beile 12-146-123-15
+prfword beilen 12-146-123-14
+prfword beils 12-146-123-234
 endword bein 12-1246 shouldn't use the bei-contraction
 endword beine 12-1246-15 shouldn't use the bei-contraction
 endword beinen 12-1246-14 shouldn't use the bei-contraction
@@ -689,23 +879,36 @@ endword beines 12-1246-123456 shouldn't use the bei-contraction
 endword beins 12-1246-234 shouldn't use the bei-contraction
 before t always beinhal 23-35-125-25 shouldn't use the bei-contraction
 always beinhalter 12-1246-125-25-2345-12456 should use the ei-contraction
+sufword beirr 23-24-1235-1235
 always darmbein 145-356-134-12-1246
 always gabeinvent 1245-1-23-35-1236-14-2345 Übergabeinventar shouldn't use the bei-contraction
 before t always gebeiz 12346-12-146-1356
 always kreuzbein 13-1235-126-1356-12-1246
 always schienbein 156-346-1345-12-1246
 always schlüsselbein 156-123-1256-2346-13456-12-1246 shouldn't use the bei-contraction
+always reibeisen 1235-146-12-146-234-14
 
 word dem 12356
 always dem 2-12356
 endword dem 145-12356 shouldn't use the dem-contraction
+always sendemast 234-14-145-15-134-1-23456
 always außerdem 16-6-2346-12456-2-12356
+word indem 35-2-12356
+word seitdem 234-146-2345-2-12356
+word trotzdem 2345-1356-2-12356
+word zudem 2-1356-2-12356
 always demask = demaskiert shouldn't use the dem-contraction
+always dembleme 145-12356-12-123-12356-15
+always dempfänger 145-12356-1234-124-345-1345-1245-12456
 always demilit = shouldn't use the dem-contraction
 always demonstr 145-12356-135-1345-23456-1235 shouldn't use the dem-contraction
-word demo 145-12356-135 shouldn't use the dem-contraction
-word demos 145-12356-135-234 shouldn't use the dem-contraction
+sufword demo 145-12356-135 shouldn't use the dem-contraction
+prfword demo 145-12356-135
+prfword demos 145-12356-135-234
 always epidem 15-1234-24-145-12356
+always ödem 246-145-12356
+always remmidemmi 1235-15-1346-24-145-15-1346-24
+always sendemast 234-14-145-15-134-1-23456
 
 
 word durch 1456
@@ -723,6 +926,7 @@ always fürst 124-1256-1235-23456 shouldn't use the für-contraction
 
 word gegen 1245
 always gegen 2-1245
+always gegenauigkeit 12346-12346-1345-16-45-13
 prfword gegend 12346-1245-14-145
 prfword gegenden 12346-1245-14-145-14
 prfword gegenzug 2-1245-1356-136-1245
@@ -737,9 +941,14 @@ always fürsorgewesen 2-124-234-26-12346-2456-123456-14 shouldn't use the gewese
 
 word immer 1346
 always immer 2-1346
+always abstimm 1-12-23456-24-1346
 always immersion 24-1346-12456-234-24-135-1345 shouldn't use the immer-contraction
 always immersiv 24-1346-12456-234-24-1236
 always flimmer 124-123-24-1346-12456
+always glimmer 1245-123-24-1346-12456
+always schimmer 156-24-1346-12456
+always schlimmer 156-123-24-1346-12456
+always trimmer 2345-1235-24-1346-12456
 always wimmer 2456-24-1346-12456 shouldn't use the immer-contraction
 always zimmer 1356-24-1346-12456 shouldn't use the immer-contraction
 
@@ -754,7 +963,12 @@ always mit 2-2345
 always mittl =
 always mittwoch 134-24-2345-2345-2456-135-1456
 always primitiv =
+before t always imita =
+always imitation 24-134-24-2345-5-1345
+always imitativ 24-134-24-2345-5-1236
 before g always mitta 134-24-2345-2345-1
+always mittägig 134-24-2345-2345-345-1245-45
+always mittäglich 134-24-2345-2345-345-1245-456
 
 
 
@@ -767,9 +981,14 @@ always nichtzuck 2-1345-1356-136-46
 word so 1234
 always so 2-1234
 always soper 234-135-1234-12456
+always sopfer 234-135-1234-124-12456
 endword son =
+endword sor =
+endword sos =
 always cursor = shouldn't use the so-contraction
+prfword korso 13-26-234-135 shouldn't use the so-contraction
 begword		absol		=
+always		absolu		=
 begword		absorb		1-12-234-26-12
 begword		absorp		1-12-234-26-1234
 always		adsorbier	1-145-234-26-12-346-1235
@@ -786,23 +1005,36 @@ begmidword	sensor		234-14-234-26
 endword		sensor		234-14-234-135-1235
 endword		sensor		234-14-234-135-1235
 always		sobjek		=
-always		sockel		234-135-46-13456
+always		sobmann		234-135-12-134-235-1345
+always		sobst		234-135-12-23456
+always		sock		234-135-46
 word		soda		=
-always		soffizier	234-135-124-124-24-1356-346-1235
+prfword		sofa		=
+prfword		sofas		=
+always		soff		=
 always		soft		=
 always		sohl		=
 always		sohn		=
 sufword		soja		=
+always		soktav		=
 always		soldat		=
 sufword		solo		=
 endword		solo		=
 endword		solos		=
+always		sombuds		=
+always		sommelier	234-135-1346-13456-24-12456
 always		sommer		234-135-1346-12456
 before konsonant always	son =
 always		sonogra		=
 always		sonn		=
 always		sonst		234-135-1345-23456
 always		sophokles	234-135-1234-125-135-13-123-123456
+begmidword	sopran		234-135-1234-1235-235
+endword		sopran		=
+always		soptik		=
+always 		soptim		=
+always		⠎⠕⠏⠞⠊⠕⠝		=
+always		soratorium	234-26-1-2345-26-24-136-134
 always		sorientier	234-26-24-14-2345-346-1235
 before konsonant always	sor		234-26
 sufword		soul		=
@@ -812,7 +1044,10 @@ always		souvenir	234-135-136-1236-14-24-1235
 always		souverän	234-135-136-1236-12456-345-1345
 always		sowjet		=
 always		sozio		=
+always		sponsor		=
 midword ungsopt 136-234-135-1234-2345 Abendgestaltungsoption shouldn't use the so-contraction
+prfword sensor 234-14-234-135-1235
+prfword sensoren 234-14-234-26-14
 
 word über 1256
 word ueber 1256
@@ -826,8 +1061,21 @@ always überlauf 2-1256-123-16-124
 
 word und 136
 always und 2-136
+always abgerund 1-12-12346-1235-256-145
+always aufgerund 2-16-12346-1235-256-145
+always ausgerund 16-234-12346-1235-256-145
+begword gerund 12346-1235-256-145
+always geschunden 12346-156-256-145-14
+always gerundium 1245-12456-256-145-24-136-134
+begword ungerund 256-12346-1235-256-145
+always wohlgerund 2456-123-12346-1235-256-145
 sufword bund 12-256-145
-always diffundier 245-24-124-124-256-145-346-1235
+sufword bundes 12-256-145-123456
+prfword bund 12-256-145
+prfword bunde 12-256-145-15
+prfword bunden 12-256-145-14
+prfword bundes 12-256-145-123456
+always diffundier 145-24-124-124-256-145-346-1235
 before t always fundamen 124-256-145-1-134-14
 before t always aufundamen 16-124-256-145-1-134-14
 prfword fund 124-256-145
@@ -840,14 +1088,27 @@ prfword fundener 124-256-145-14-12456
 prfword fundenes 124-256-145-14-123456
 prfword fundes 124-256-145-123456
 prfword funds 124-256-145-234
+prfword fundus 124-256-145-136-234
+always gebunden 12346-12-256-145-14
 sufword gesund 12346-234-256-145
+always holunder 125-135-123-256-145-12456
 sufword hund 125-256-145 shouldn't use the und-contraction
 before hilmnrsu sufword hunde 125-256-145-15 shouldn't use the und-contraction
-sufword blindenhunde 12-123-35-145-14-125-256-145-15 shouldn't use the und-contraction
-sufword diensthunde 145-346-1345-23456-125-256-145-15 shouldn't use the und-contraction
-sufword jagdhunde 245-1-1245-145-125-256-145-15 shouldn't use the und-contraction
-sufword kampfhunde 13-1-134-1234-124-125-256-145-15 shouldn't use the und-contraction
-sufword polizeihunde 1234-135-123-24-1356-146-125-256-145-15 shouldn't use the und-contraction
+always blindenhund 12-123-35-145-14-125-256-145 shouldn't use the und-contraction
+always diensthund 145-346-1345-23456-125-256-145 shouldn't use the und-contraction
+always flughund 124-123-136-1245-125-256-145
+always hatzhund 125-1-2345-1356-125-256-145
+always haushund 125-16-234-125-256-145
+always heereshund 125-15-15-1235-123456-125-256-145
+always hetzhund 125-15-2345-1356-125-256-145
+always hirtenhund 125-24-1235-2345-14-125-256-145
+always jagdhund 245-1-1245-145-125-256-145 shouldn't use the und-contraction
+always kampfhund 13-1-134-1234-124-125-256-145 shouldn't use the und-contraction
+always militärhund 134-24-123-24-2345-345-1235-125-256-145
+always polizeihund 1234-135-123-24-1356-146-125-256-145 shouldn't use the und-contraction
+always rettungshund 1235-15-2345-2345-136-234-125-256-145
+always schweinehund 156-2456-1246-15-125-256-145
+always windhund 2456-35-145-125-256-145
 prfword hund 125-256-145 shouldn't use the und-contraction
 prfword hunde 125-256-145-15 shouldn't use the und-contraction
 prfword hunden 125-256-145-14 shouldn't use the und-contraction
@@ -857,15 +1118,44 @@ always hundert 125-256-145-12456-2345 shouldn't use the und-contraction
 prfword hunderte 125-256-145-12456-236 shouldn't use the und-contraction
 always kund 13-256-145 shouldn't use the und-contraction
 always mund 134-256-145 shouldn't use the und-contraction
+always rundfahrt 1235-256-145-2-1235-2345
 always rundfunk 1235-256-145-124-256-13 shouldn't use the und-contraction
 always rundgang 1235-256-145-1245-235-1245
 always rundgäng 1235-256-145-1245-345-1345-1245
+always kreisrund 13-1235-146-234-1235-256-145
+always schlund 156-123-256-145
 sufword schrund 156-1235-256-145
 
 always stundung 23456-256-145-136
 always sstundung 234-23456-256-145-136
 
 always umrund 136-134-1235-256-145
+always undamenhaft 256-145-1-134-14-125-124
+always undatier 256-145-1-2345-346-1235
+always undefinier 256-145-15-124-35-346-1235
+always undeformier 256-145-15-124-26-134-346-1235
+always undeklarier 256-145-15-13-123-356-346-1235
+always undeklinier 256-145-15-13-123-35-346-1235
+always undekorier 256-145-15-13-26-346-1235
+sufword undenk 256-145-14-13
+always undetaillier 256-145-15-2345-1-24-12345-346-1235
+always undeterminier 256-145-15-2345-12456-134-35-346-1235
+always undeutbar 256-145-126-2345-12-1-1235
+always undeutlich 256-145-126-2345-456
+always undeutsch 256-145-156
+before t begword undich 256-145-3456
+always undifferenzier 256-145-24-124-124-12456-14-1356-346-1235
+always undiplomat 256-145-24-1234-123-135-134-1-2345
+always undiskut 256-145-24-234-13-136-2345
+always undistanzier 256-145-24-23456-235-1356-346-1235
+always undisziplinier 256-145-24-234-1356-24-1234-123-35-346-1235
+always undogmat 256-145-135-1245-134-1-2345
+always undokumentier 256-145-135-13-136-134-14-2345-346-1235
+always undomestizier 256-145-135-134-15-23456-24-1356-346-1235
+always undotier 256-145-135-2345-346-1235
+always undramat 256-145-1235-1-134-1-2345
+always undruck 256-145-46
+always unduld 256-145-136-123-145
 always undurch 256-2-1456
 always wund 2456-256-145 shouldn't use the und-contraction
 
@@ -875,6 +1165,12 @@ always eunter 15-2-256
 sufword kunter 13-256-2345-12456 shouldn't use the unter-contraction
 sufword kunterbunter 13-256-2345-12456-12-256-2345-12456
 sufword munter 134-256-2345-12456 shouldn't use the unter-contraction
+always aufmunter 2-16-134-256-2345-12456
+always aufgemunter 2-16-12346-134-256-2345-12456
+always aufzumunter 2-16-2-1356-134-256-2345-12456
+always ermunter 12456-134-256-2345-12456
+always putzmunter 1234-136-2345-1356-134-256-2345-12456
+
 always virus =
 
 word voll 12345
@@ -896,14 +1192,77 @@ always favorit 124-1-1236-26-24-2345 shouldn't use the vor-contraction
 
 word wie 126
 always wie 2-126
+always tätowier 2345-345-2345-135-2456-346-1235
+always zwieback 1356-2456-346-12-1-46
 always zwiebel 1356-2456-346-12-13456 shouldn't use the wie-contraction
+always zwiefach 1356-2456-346-124-56
+before t always zwiegespal 1356-2456-346-12346-234-1234-25
+before t always zwiespal 1356-2456-346-234-1234-25
+before t always zwiespäl 1356-2456-346-234-1234-345-123
 
 word zu 1356
 always zu 2-1356
+always zucchini 1356-136-6-14-1456-35-24
+sufword azur =
+sufword mazurk =
+word zug =
+before konsonant always zug =
+sufword anzuglied 235-2-1356-1245-123-346-145
+sufword anzuglotz 235-2-1356-1245-123-135-2345-1356
+
+always zugegen 2-1356-2-1245
+always zugehör 2-1356-12346-125-246-1235
+always zugleich 2-1356-1245-1456
+always zugrenzen 2-1356-1245-1235-14-1356-14
+always zugriff 2-1356-1245-1235-24-124-124
+always zugabteil 1356-136-1245-1-12-2345-146-123
+sufword zuganzahl 1356-136-1245-235-1356-123
+always zugarbeit 1356-136-1245-356-12
+always zugauflös 1356-136-1245-2-16-123-246-234
+always zugaufsicht 1356-136-1245-2-16-234-3456-2345
+always zugausfall 1356-136-1245-16-234-124-12345
+always zugeinheit 1356-136-1245-1246-125
+always zugeinricht 1356-136-1245-1246-2-3456
+sufword zugeh 2-1356-1245-2356
+always zugeigenschaft 1356-136-1245-146-1245-14-156
+always zugeinsatz 1356-136-1245-1246-234-1356
+always zugeinsätz 1356-136-1245-1246-5-234-1356
+always zugeinwirk 1356-136-1245-1246-2456-13
+always zugentfern 1356-136-1245-14-2345-124-12456-1345
+always zugentführ 1356-136-1245-14-2345-124-125
+always zugentgleis 136-136-1245-14-2345-1245-123-146-234
 always zugentlast 1356-136-1245-14-2345-123-1-23456 shouldn't use the zu- nor ge-contraction
-word indem 35-2-12356
-word trotzdem 2345-1356-2-12356
-word zudem 1356-2-12356
+always zugentscheid 1356-136-1245-14-2345-156-146-145
+before t always zugexper 1356-136-1245-15-6-1346-1234-12456
+sufword zugig 1356-136-1245-45
+always zugober 1356-136-1245-135-12-12456
+always zugrunde 2-1356-1245-145-15
+always zugüber 1356-136-1245-2-1256
+always zugunglück 1356-136-1245-256-1245-46
+always zugunter 1356-136-1245-2-256
+
+prfword zupf =
+prfword zupfe =
+prfword zupfen 1356-136-1234-124-14
+prfword zupfend 1356-136-1234-124-14-145
+prfword zupfende 1356-136-1234-124-14-145-15
+prfword zupfendem 1356-136-1234-124-14-145-12356
+prfword zupfenden 1356-136-1234-124-14-145-14
+prfword zupfender 1356-136-1234-124-14-145-12456
+prfword zupfendes 1356-136-1234-124-14-145-123456
+prfword zupfens 1356-136-1234-124-14-234
+prfword zupfst 1356-136-1234-124-23456
+prfword zupft 1356-136-1234-124-2345
+prfword zupfte 1356-136-1234-124-236
+prfword zupftem 1356-136-1234-124-2345-12356
+prfword zupften 1356-136-1234-124-2345-14
+prfword zupfter 1356-136-1234-124-2345-12456
+prfword zupftes 1356-136-1234-124-2345-123456
+prfword zupftest 1356-136-1234-124-236-23456
+prfword zupftet 1356-136-1234-124-236-2345
+
+
+
 always zucht 1356-136-1456-2345 shouldn't use the zu-contraction
 always zuck 1356-136-46 shouldn't use the zu-contraction
 before g always zug =
@@ -943,19 +1302,62 @@ always aktuell 1-13-2345-136-15-12345 should use the ll-contraction
 always all 1-12345
 sufword alle 1-15
 always allegor 1-12345-15-1245-26 Allegorie shouldn't use the ae-contraction
+always allegri 1-12345-15-1245-1235-24
+always allegro 1-12345-15-1245-1235-135
 always allein 1-1246
 word allem 1-12356
 always allen 1-14
+prfword intervallen 35-2345-12456-1236-1-12345-14
+always krallen 13-1235-1-12345-14
+always knall 13-1345-1-12345
+sufword lallen 123-1-12345-14
+always prall 1234-1235-1-12345
+always schnall 156-1345-1-12345
+always korallen 13-26-1-12345-14
+always kristall 13-1235-24-23456-1-12345 shouldn't use any of the allen-contraction
+sufword ballen 12-1-12345-14
+
 always aller 1-12456
+always abgeballer 1-12-12346-12-1-12345-12456
+always abzuballer 1-12-2-1356-12-1-12345-12456
+always aufballer 2-16-12-1-12345-12456
+always aufgeballer 2-16-12346-12-1-12345-12456
+always aufzuballer 2-16-2-1356-12-1-12345-12456
+always ballerina 12-1-12345-12456-35-1
+always ballerspiel 12-1-12345-12456-2-346
 always basketball 12-1-234-13-15-2345-12-1-12345
 always faustball 124-16-23456-12-1-12345
+always football 124-135-135-2345-12-1-12345
 always fußball 124-136-6-2346-12-1-12345
+sufword geballer 12346-12-1-12345-12456
 always handball 125-145-12-1-12345
+always herumballer 125-12456-136-134-12-1-12345-12456
+always losballer 123-135-234-12-1-12345-12456
+always losgeballer 123-135-234-12346-12-1-12345-12456
+always loszuballer 123-135-234-2-1356-12-1-12345-12456
 always metall 134-15-2345-1-12345
+always radball 1235-1-145-12-1-12345
+always reinballer 1235-1246-12-1-12345-12456
+always reingeballer 1235-1246-12346-12-1-12345-12456
+always reinzuballer 1235-1246-2-1356-12-1-12345-12456
+always rumballer 1235-136-134-12-1-12345-12456
+always rumzuballer 1235-136-134-2-1356-12-1-12345-12456
 always schneeball 156-1345-15-15-12-1-12345
 always volleyball 1236-135-12345-15-6-13456-12-1-12345
 always wasserball 2456-1-2346-12456-12-1-12345
-always allerg 1-12345-12456-1245 Allergiker
+always zerballer 1356-12456-12-1-12345-12456
+always zuballer 2-1356-12-1-12345-12456
+always zugeballer 2-1356-12346-12-1-12345-12456
+always zuzuballer 2-1356-2-1356-12-1-12345-12456
+
+always allergen 1-12345-12456-1245-14
+always allergenauest 1-12456-12346-1345-16-15-23456
+always allergie 1-12345-12456-1245-346
+prfword allergien 1-12345-12456-1245-24-14
+always allergik 1-12345-12456-1245-24-13
+always allergisch 1-12345-12456-1245-24-156
+always allergoderm 1-12345-12456-1245-135-145-12456-134
+before g always allergolo 1-12345-12456-1245-135-123-135
 
 word alles 1-123456
 always allesbesser 1-123456-234-234
@@ -965,7 +1367,7 @@ always alleskönn 1-123456-2-13
 always alleswiss 1-123456-2456-2346
 
 
-always allesamt 1-12345-15-234-1-134-2345 shouldn't use the es-contraction
+always allesamt 1-15-234-1-134-2345 shouldn't use the es-contraction
 before t always alphabe 25-1234-125-1-23 shouldn't use the hab-contraction
 word also 1-135
 always ander 2-12456
@@ -975,8 +1377,12 @@ always änder 5-12456
 always abänder 1-12-5-12456
 always bänder 12-345-1345-145-12456 shouldn't use the änder-contraction
 always aender 5-12456
+prfword ränder 1235-345-1345-145-12456
+prfword rändern 1235-345-1345-145-12456-1345
 always arbeit 356-12
 always arbeits 356-12-234
+always arbeitsam 356-12-2346
+always arbeitsamt 356-12-234-1-134-2345
 always arben 356-12-14
 
 always kauf 13-16-124
@@ -1020,11 +1426,6 @@ always beere 12-15-15-1235-15
 always beeren 12-15-15-1235-14
 always behr 12-2356-1235 entbehren
 begword beid 12-145 beiderseits
-always berg 12-12456-1245 shouldn't use the be-contraction
-always berge 12-12456-12346 shouldn't use the be-contraction
-always bergen 12-12456-1245-14 shouldn't use the be-contraction
-always berger 12-12456-1245-12456 shouldn't use the be-contraction
-always berges 12-12456-1245-123456 shouldn't use the be-contraction
 always besonder 23
 always besser 234-234
 contraction ss
@@ -1039,11 +1440,22 @@ always bison =
 
 always bist 12-23456
 always bistum 12-24-23456-136-134 shouldn't use the bist-contraction
+always kubist 13-136-12-24-23456
+always kubistisch 13-136-12-5-156
+always snobistisch 234-1345-135-12-5-156
+
 always bleib 12-12
 contraction bb
+always bleiballast 12-123-346-12-1-12345-1-23456
+always bleibarren 12-123-346-12-356-1235-14
+always bleibehält 12-123-346-23-125-345-123-2345
+always bleibeschwer 12-123-346-23-156-2456-12456
+
 always brauch 2-34
+sufword abrauch 1-12-1235-16-1456
 always bräuch 5-34
 always braeuch 5-34
+
 always brief 12-124
 contraction bf
 always bring 12-1245
@@ -1087,6 +1499,7 @@ always dazubleib 145-1-2-1356-12-12 shouldn't use the dazu-contraction
 always dazumal 145-1-2-1356-134
 always deuten 145-126-2345-14 shouldn't use the te-contraction
 always deal = dealer
+begmidword ideal 24-145-15-25
 word dei = Agnus Dei
 always demokrat 145-2345
 contraction dt
@@ -1110,9 +1523,12 @@ word dir 145-1235
 word doch 145-1456
 always druck 145-46
 always drück 5-145-46
+always bildrück 12-24-123-145-1235-46
 always dürf 2-145
 
 always eben 15-12-14
+prfword tebene 2345-15-12-14-15
+
 word ebenso 15-135
 contraction eo
 sufword ehemal 15-125-15-134
@@ -1131,6 +1547,7 @@ contraction tw
 
 always fahr 2-1235
 always fahrts 2-1235-2345-234 shouldn't use the ss-contraction
+always fahrtschreib 2-1235-156-12
 always fahrtstell 2-1235-2345-2-13456
 always fahrtstreck 2-1235-2345-23456-1235-15-46
 always fahrtsstell 2-1235-2345-234-2-13456
@@ -1149,6 +1566,7 @@ before hilmnrsu sufword folge 124-1245-15
 word folgen 124-1245-14
 before konsonant sufword folgen 124-1245-14
 sufword folgenabschätz 124-1245-14-1-12-156-345-2345-1356
+always folgenahrung 124-1245-15-1345-1-125-1235-136
 sufword folgenerschein 124-1245-14-12456-156-1246
 before konsonant sufword folger 124-1245-12456
 sufword folgerung 124-1245-12456-136
@@ -1165,10 +1583,11 @@ always aufreund 16-124-145
 
 always führ 124-125
 contraction fh
-always fürcht 124-1256-1235-1456-2345 shouldn't use the für-contraction
+before t always fürch 124-1256-1235-1456 shouldn't use the für-contraction
 
 always ganz 1245-1356
 contraction gz
+before g always analoganzei 235-25-135-1245-235-1356-146
 always gänz 5-1245-1356
 always gaenz 5-1245-1356
 always garnison 1245-356-1345-24-234-135-1345 shouldn't use the nis-contraction
@@ -1176,7 +1595,9 @@ word gegend 12346-1245-14-145 shouldn't use the gegen-contraction
 
 always gegenüber 1245-1256
 contraction gü
+always gegenübernahm 2-1245-2-1256-1345-134
 always gegenübertrag 2-1245-2-1256-2345-1245
+always gegenüberwachung 2-1245-2-1256-2456-56-136
 
 always gegenwart 1245-2456
 contraction gw
@@ -1192,7 +1613,6 @@ prfword genem 1245-14-12356
 prfword genen 1245-14-14
 prfword gener 1245-14-12456
 prfword genes 1245-14-123456
-always geogra = Geographie shouldn't use the ge-contraction
 prfword gern 1245-12456-1345
 midendword gerlich 1245-12456-456 bürgerlich shouldn't use the ge-contraction
 always gern 1245-12456-1345 we shouldn't use the ge-contraction here
@@ -1213,8 +1633,13 @@ always grund 1245-145
 contraction gd
 always gründ 5-1245-145
 always gründonners 1245-1235-1256-1345-145-135-1345-1345-12456-234 gründonnerstag shouldn't use the gründ-contraction
+
 always hab 2-125
+always frühab =
+always frühabsolut = shouldn't use the so-contraction
 always habilit =
+always habitus =
+
 always haft 125-124
 contraction hf
 always häft 5-125-124
@@ -1230,11 +1655,12 @@ always hat 125-2345
 contraction ht
 word hattest 125-15-23456 shouldn't use the es-contraction
 word hattrick 125-1-2345-2345-24-46 shouldn't use the hatt-contraction
+before t always phospha =
 
 always haupt 125-1234
 contraction hp
 always ehaupt 15-125-1234
-always soberfach 234-135-12-12456-124-45
+always soberfach 234-135-12-12456-124-56
 always soberfläch 234-135-12-12456-124-123-345-1456
 always sobergericht 234-135-12-12456-12346-2-3456
 always sobergrenz 234-135-12-12456-1245-1235-14-1356
@@ -1247,6 +1673,8 @@ always soberteil 234-135-12-12456-2345-146-123
 always häupt 5-125-1234
 always herr 1235-1235
 contraction rr
+always herruf 125-12456-1235-136-124
+always sherry 234-125-12456-125-6-13456
 
 always hier 125-1235
 contraction hr
@@ -1282,6 +1710,7 @@ word jedoch 245-1456
 sufword jetzig 245-45
 always johannisberg 245-135-125-235-1345-24-234-12-12456-1245 shouldn't use the nis-contraction
 always jung 245-256-1245 shouldn't use the ung-contraction
+prfword junge 245-256-12346 shouldn't use the ung-contraction
 
 word kannst 13-23456
 always kapital 13-1234
@@ -1322,13 +1751,17 @@ always ausklang 16-234-13-123-235-1245
 always basisklang 12-1-234-24-234-13-123-235-1245
 always bassklang 12-1-2346-13-123-235-1245
 always beiklang 2-12-13-123-235-1245
+always bildklang 12-24-123-145-13-123-235-1245
 always chorklang 1456-26-13-123-235-1245
 always donnerklang 145-135-1345-1345-12456-13-123-235-1245
 always flötenklang 124-123-246-2345-14-13-123-235-1245
 always gegenklang 2-1245-13-123-235-1245
+always gleichklang 1245-1456-13-123-235-1245
 always mehrklang 2-2356-13-123-235-1245
 always nebenklang 1345-12-13-123-235-1245
 always vielklang 1236-123-13-123-235-1245
+always wohlklang 2456-123-13-123-235-1245
+before g always wohlklän 2456-123-13-123-345-1345
 
 always dreiklang 145-1235-146-13-123-235-1245
 always vierklang 1236-346-1235-13-123-235-1245
@@ -1337,6 +1770,7 @@ always fünfklang 124-1256-1345-124-13-123-235-1245
 
 always läng 5-123-1245
 always laeng 5-123-1245
+before g always abklän =
 always jahrelang 245-1235-15-123-1245 shouldn't use the el-contraction
 always jahrhundertelang 245-125-15-123-1245 shouldn't use the el-contraction
 always jahrzehntelang 245-1356-15-123-1245 shouldn't use the el-contraction
@@ -1350,26 +1784,47 @@ always laess 5-123
 sufword blass 12-123-1-2346
 sufword blasst 12-123-1-234-23456
 always class = shouldn't use the lass-contraction
-before s always glas =
 sufword klass 13-123-1-2346 shouldn't use the lass-contraction
+always klasse 13-123-1-2346-15
+always klassen 13-123-1-2346-14
+always klassifi 13-123-1-2346-24-124-24 shouldn't use the lass-contraction
+always klassig 13-123-1-2346-45 shouldn't use the lass-contraction
+always klassisch 13-123-1-2346-24-156 shouldn't use the lass-contraction
+always klassik 13-123-1-2346-24-13
+always klassiz 13-123-1-2346-24-1356
+always deklassier 145-15-13-123-1-2346-346-1235
 always lassist 123-1-2346-24-23456
+always klässler 13-123-345-2346-123-12456
+
 always laich 123-1-24-1456 shouldn't use the ich-contraction
 always lasagne = shouldn't use the sag-contraction
 always lasso 123-1-2346-135 shouldn't use the lass-contraction
 always länd =
 always laend =
+always detailänder 145-15-2345-1-24-123-5-12456
+always stiländer 23456-24-123-5-12456
 always leb 123-12
 contraction lb
+before b always abkle =
+before b always ankle 235-13-123-15
 before b always aufkle 2-16-13-123-15
+before b always bekle 23-13-123-15
+before b always einkle 1246-13-123-15
+before b always festkle 124-15-23456-13-123-15
 before t always gekleb 12346-13-123-15-12
+before b begword kle =
 always klebeband 13-123-15-23-12-235-145 shouldn't use the leb-contraction
 always klebebänder 13-123-15-23-12-345-1345-145-12456 shouldn't use the leb- nor änder-contraction
 always klebebild 13-123-15-23-12-24-123-145
 always klebstoff 13-123-15-12-23456-135-124-124
+before b always überkle 2-1256-13-123-15
 before b begword verkle 36-13-123-15
 before b midword verkle 1236-12456-13-123-15
 
 always leicht 123-1456
+before t begword bleich 12-123-146-1456
+prfword schleicht 156-123-146-1456-2345
+
 always letzt 123-2345
 contraction lt
 always lieb 123-346-12
@@ -1383,6 +1838,50 @@ always mmaschin 134-134-156
 always nähmaschin 1345-345-125-134-156
 always zugmaschin 1356-136-1245-134-156
 
+before e always akazi =
+before e always amphibi =
+before e always argentini 356-1245-14-2345-35-24
+before e always armeni 356-134-14-24
+before e always australi 16-23456-1235-25-24
+before e always äthiopi =
+before e always babyloni =
+before e always belgi 12-13456-1245-24
+before e always bolivi =
+before e always bosni =
+before e always brasili =
+before e always flexitari 124-123-15-6-1346-24-2345-356-24
+before e always georgi 1245-15-26-1245-24
+before e always gerani 1245-12456-235-24
+before e always gradi =
+before e always histori 125-24-23456-26-24
+before e always hortensi 125-26-2345-14-234-24
+always hygiene 125-6-13456-1245-24-14-15
+always ehygiene 15-125-6-13456-1245-24-14-15
+before e always immobili 24-1346-135-12-24-123-24
+before e always indonesi 35-145-135-1345-123456-24
+before e always itali 24-2345-25-24
+before e always jordani 245-26-145-235-24
+before e always kaledoni 13-25-15-145-135-1345-24
+before e always kaliforni 13-25-24-124-26-1345-24
+before e always kanadi 13-235-1-145-24
+before e always kappadoki =
+before e always kataloni 13-1-2345-25-135-1345-24
+before e always makedoni =
+before e always malaysi 134-25-1-6-13456-234-24
+before e always malawi =
+before e always materi 134-1-2345-12456-24 materie shouldn't use the te- nor the ie-contraction
+before e always mazedoni =
+before e always mikronesi 134-24-13-1235-135-1345-123456-24
+before e always moldawi =
+before e always polynesi 1234-135-123-6-13456-1345-123456-24
+before e always skandinavi 234-13-235-145-35-1-1236-24
+before e always somali 234-135-134-25-24
+before e always spani 234-1234-235-24
+before e always terri 2345-12456-1235-24
+before e always tragödi =
+before e always trinitari 2345-1235-35-24-2345-356-24
+before e always tunesi 2345-256-123456-24
+
 always material 134-123
 contraction ml
 always dematerial 145-15-134-123
@@ -1390,6 +1889,8 @@ always ematerial 15-134-123
 always mmaterial 134-134-123
 
 always materiell 134-12345
+always mmateriell 134-134-12345
+
 word mir 134-1235
 always mittel 134-2345
 contraction mt
@@ -1420,20 +1921,48 @@ always enahm 15-1345-134
 
 always natur 1345-2345
 contraction nt
+always denatur 145-15-1345-2345
+always renatur 1235-15-1345-2345
+always signatur 234-45-1345-1-2345-136-1235
+always ssignatur 234-234-45-1345-1-2345-136-1235
+
 always natürlich 1345-456
 always neben 1345-12
 contraction nb
 always wohneben 2456-135-125-1345-15-12-14
+prfword nebene 1345-15-12-14-15
+prfword nebenen 1345-15-12-14-14
+
 always nächst 1345-23456
 always naechst 1345-23456
+
 always nehm 1345-125
 contraction nh
+always enehm 15-1345-125
+
 endword nisch 1345-24-156 shouldn't use the nis-contraction
 endword nische 1345-24-156-15 shouldn't use the nis-contraction
 endword nischem 1345-24-156-12356 shouldn't use the nis-contraction
 endword nischen 1345-24-156-14 shouldn't use the nis-contraction
 endword nischer 1345-24-156-12456 shouldn't use the nis-contraction
+endword nischere 1345-24-156-12456-15 shouldn't use the nis-contraction
+endword nischerem 1345-24-156-12456-12356 shouldn't use the nis-contraction
+endword nischeren 1345-24-156-12456-14 shouldn't use the nis-contraction
+endword nischerer 1345-24-156-12456-12456 shouldn't use the nis-contraction
+endword nischeres 1345-24-156-12456-123456 shouldn't use the nis-contraction
 endword nisches 1345-24-156-123456 shouldn't use the nis-contraction
+endword nischs 1345-24-156-234 shouldn't use the nis-contraction
+endword nischste 1345-24-156-23456-15 shouldn't use the nis-contraction
+endword nischstem 1345-24-156-23456-12356 shouldn't use the nis-contraction
+endword nischsten 1345-24-156-23456-14 shouldn't use the nis-contraction
+endword nischster 1345-24-156-23456-12456 shouldn't use the nis-contraction
+endword nischstes 1345-24-156-23456-123456 shouldn't use the nis-contraction
+endword nischt 1345-24-156-2345 shouldn't use the nis-contraction
+endword nischte 1345-24-156-236 shouldn't use the nis-contraction
+endword nischtem 1345-24-156-2345-12356 shouldn't use the nis-contraction
+endword nischten 1345-24-156-2345-14 shouldn't use the nis-contraction
+endword nischter 1345-24-156-2345-12456 shouldn't use the nis-contraction
+endword nischtes 1345-24-156-2345-123456 shouldn't use the nis-contraction
 endword nist 1345-24-23456
 endword nisten 1345-24-23456-14
 endword nistin 1345-24-23456-35
@@ -1441,11 +1970,14 @@ endword nistinnen 1345-24-23456-35-1345-14
 
 always nichts 1345-234
 contraction ns
+always nichtsachs 2-1345-234-56-234
 always nichtschimmel 2-1345-156-24-1346-13456
 always nichtschlacht 2-1345-156-123-56-2345
 always nichtschlag 2-1345-156-1245
+always nichtschlüssel 2-1345-156-123-1256-2346-13456
 always nichtschneidend 2-1345-156-1345-146-145-14-145
 always nichtschreib 2-1345-156-12
+always nichtschrumpf 2-1345-156-1235-136-134-1234-124
 always nichtschuld 2-1345-156-136-123-145
 always nichtschüler 2-1345-156-1256-123-12456
 always nichtschwefel 2-1345-156-2456-15-124-13456
@@ -1455,9 +1987,14 @@ always nichtsee 2-1345-234-15-15
 word nichtsein 2-1345-234-1246
 always nichtselbst 2-1345-234-23456
 always nichtsesshaft 2-1345-234-15-2346-125-124
+always nichtsequen 2-1345-234-15-6-12345-136-14
 always nichtsetz 2-1345-2-15
+always nichtsicht 2-1345-234-3456-2345
+always nichtskandinavier 2-1345-234-13-235-145-35-1-1236-24-12456
 always nichtsozial 2-1345-234-123
+always nichtspanier 2-1345-234-1234-235-24-12456
 always nichtspanisch 2-1345-234-1234-235-24-156
+begword nichtspezial 2-1345-234-1234-15-1356-24-25
 always nichtspezifisch 2-1345-234-1234-15-1356-24-124-24-156
 always nichtspiel 2-1345-2-346
 always nichtsprachlich 2-1345-234-1234-1235-56-456
@@ -1465,17 +2002,22 @@ always nichtsprech 2-1345-2-2346
 always nichtstaat 2-1345-23456-2345
 always nichtstand 2-1345-2-23456
 always nichtständ 2-1345-5-23456
+always nichtstarter 2-1345-23456-356-2345-12456
+always nichtstatistik 2-1345-23456-1-2345-24-23456-24-13
 always nichtstell 2-1345-2-13456
 always nichtsteroid 2-1345-23456-12456-135-24-145
 always nichtsteuer 2-1345-23456-126-12456
 always nichtstreuung 2-1345-23456-1235-126-136
 always nichtstruktur 2-1345-23456-1235-136-13-2345-136-1235
 always nichtstudent 2-1345-23456-136-145-14-2345
+always nichtsubstantivisch 2-1345-234-136-12-23456-235-2345-24-1236-24-156
 always nichtsuchend 2-1345-234-136-1456-14-145
 always nichtsehen 2-1345-234-2356-14 shouldn't use the nichts-contraction
 always nichtschwimm 2-1345-156-2456-24-1346 shouldn't use the nichts-contraction
 
 always noch 1345-1456
+sufword monoch 134-135-1345-135-1456
+
 always nommen 1345-1346
 contraction nx
 always genommen 12346-1345-1346
@@ -1488,6 +2030,8 @@ prfword normal 1345-26-134-1-123 shouldn't use the mal-contraction
 always anim 235-24-134 animal shouldn't use the mal-contraction
 always nur 1345-1235
 contraction nr
+always knurr =
+
 always nutz 1345-1356
 contraction nz
 always nebenutz 1345-15-23-1345-1356
@@ -1543,6 +2087,7 @@ always richt 2-3456
 always gericht 12346-2-3456
 always spricht 234-1234-1235-3456-2345 shoudln't use the richt-contraction
 always herricht 125-12456-2-3456 shouldn't use the herr-contraction
+sufword trichter 2345-1235-3456-2345-12456
 
 always rück 1235-46
 always rueck 1235-46
@@ -1551,9 +2096,14 @@ always herrück 125-15-1235-1235-46 shouldn't use the herr-contraction
 
 always sag 234-1245
 contraction sg
+always lossag 123-135-234-234-1245
+always ausagier 16-234-1-1245-346-1235
+always corsage 6-14-26-234-1-12346
+always corsagen 6-14-26-234-1-1245-14
 always korsage 13-26-234-1-12346
 always korsagen 13-26-234-1-1245-14
 always sagenda 234-1-1245-14-145-1
+#always sagenden 234-1-1245-14-145-14
 prfword sagent 234-1-1245-14-2345
 prfword sagenten 234-1-1245-14-2345-14
 prfword sagentin 234-1-1245-14-2345-35
@@ -1561,6 +2111,11 @@ prfword sagentinnen 234-1-1245-14-2345-35-1345-14
 prfword sagentur 234-1-1245-14-2345-136-1235
 prfword sagenturen 234-1-1245-14-2345-136-1235-14
 prfword sagenturs 234-1-1245-14-2345-136-1235-234
+always sagglomer 234-1-1245-123-135-134-12456
+before t always saggrega =
+always sagitation 234-1-1245-24-2345-5-1345
+always visage 1236-24-234-1-12346
+always visagen 1236-24-234-1-1245-14
 
 always saal = shouldn't use the al-contraction
 word samen 234-1-134-14 shouldn't use the sam-contraction
@@ -1585,19 +2140,22 @@ always schrieb 2-156
 always schwierig 156-45
 always schwillt 156-2456-24-12345-2345 shouldn't use the will-contraction
 always schwoll 156-2456-135-12345 geschwollen shouldn't use the woll-contraction
+
 word sehr 234-1235
+word sosehr 2-1234-234-1235
 sufword versehr 36-234-1235
 sufword unversehr 256-1236-12456-234-1235
+
 always selbst 234-23456
 always selbständig 234-13456-12-5-23456-45 shouldn't use the selbst-contraction
 always selbstaendig 234-13456-12-5-23456-45 shouldn't use the selbst-contraction
 
 always setz 2-15
 before st always setzes 2-15-123456
+prfword setzest 2-15-15-23456
 always esetz 15-2-15
 always ssetz 234-2-15
 
-sufword sesam 234-123456-1-134 shouldn't use the sam-contraction
 word sind 234-145
 contraction sd
 always gesinde 12346-234-35-145-15
@@ -1629,8 +2187,17 @@ always stand 2-23456
 
 always ständ 5-23456
 always staend 5-23456
+always dienständer 145-346-1345-23456-5-12456
+
 always stell 2-13456
+before l sufword bastel 12-1-23456-13456
 always sstell 234-2-13456 shouldn't use the ss-contraction
+prfword kastell 13-1-23456-15-12345
+prfword kastelle 13-1-23456-15-12345-15
+prfword kastellen 13-1-23456-15-12345-14
+prfword kastells 13-1-23456-15-12345-234
+
+
 word stets 23456-234
 always strahier 23456-1235-1-125-346-1235 abstrahieren
 
@@ -1699,8 +2266,11 @@ always während 345-145
 contraction äd
 always waehrend 345-145
 sufword warm 2456-356-134 shouldn't use the war-contraction
+
 always weg 2456-1245
 contraction wg
+always norwegen 1345-26-2456-15-1245-14
+always norweger 1345-26-2456-15-1245-12456
 
 always weis 2-146 Anweisung
 always weispiel 2456-146-2-346
@@ -1712,10 +2282,15 @@ before s begword zwei 1356-2456-146
 
 always weit 2456-2345
 before konsonant begword zweit 1356-2456-146-2345 shouldn't use the weit-contraction
+always zweiteil 1356-2456-146-2345-146-123
+
 always wenig 2456-45
 sufword wenn 2456-1345
 contraction wn
+
 always werd 2-2456
+always schwerdonners 156-2456-12456-145-135-1345-1345-12456-234
+
 always wesentlich 2456-456
 always wiegend 2456-346-1245-14-145 shouldn't use the wie-contraction
 always wieder 346-145
@@ -1749,14 +2324,30 @@ always ganzahl 1245-235-1356-123
 always zähl 5-1356-123
 always zeit 1356-2345
 contraction zt
+always polizei 1234-135-123-24-1356-146 polizeitruppen
+
 before st midendword zug =
 word zum 1356-134
 word zunächst 1356-1345
 word zunaechst 1356-1345
 word zur 1356-1235
+sufword zurkenntnis 1356-1235-13-14-1345-2345-1346
 sufword zurschau 1356-1235-156-16
+word zurzeit 1356-1235-1356-2345
 sufword zurück 1356-46
 sufword zurueck 1356-46
+sufword zurückge 1356-46-12346
+word zurückgehe 1356-46-1245-2356-15
+sufword zurückgehen 1356-46-1245-2356-14
+word zurückgehst 1356-46-1245-2356-23456
+word zurückgeht 1356-46-1245-2356-2345
+sufword zurückgelaufen 1356-46-12346-123-16-124-14
+sufword zurückgelegen 1356-46-1245-1245
+before s sufword zurückverwie 1356-46-1236-12456-2456-346
+before s sufword zurückwie 1356-46-2456-346
+sufword zurückzu 1356-46-2-1356
+sufword zurückzuck 1356-46-1356-136-46
+
 always zusammen 1356-234
 always zwischen 1356-2456
 contraction zw
@@ -1775,7 +2366,6 @@ always ausgaben 16-234-1245-1-12-14 shouldn't use the be-contraction
 sufword ablageraum 1-12-123-1-12346-1235-16-134
 always ablageräum 1-12-123-1-12346-1235-34-134
 always ablageraeum 1-12-123-1-12346-1235-34-134
-always ablauf 1-12-123-16-124 shouldn't use the auf-contraction
 always ablösesumm 1-12-123-246-234-15-234-136-1346 shouldn't use the es-contraction
 always abloesesumm 1-12-123-246-234-15-234-136-1346 shouldn't use the es-contraction
 always abnormität 1-12-1345-26-134-5-345 shouldn't use the mit-contraction
@@ -1788,10 +2378,6 @@ always afrikarefer 1-124-1235-24-13-1-1235-15-124-12456 shouldn't use the ar-con
 sufword agent 1-1245-14-2345 shouldn't use the ge-contraction
 always akadem 1-13-1-145-12356 shouldn't use the dem-contraction
 sufword akten 1-13-2345-14 shouldn't use the te-contraction
-always akteur 1-13-2345-126-1235 shouldn't use the te-contraction
-always ingenieur 35-1245-14-24-126-1235
-always interieur 35-2345-12456-24-126-1235
-always porteur 1234-26-2345-126-1235
 always alarm 25-356-134 Alarmmeldung shouldn't use the mm-contraction
 always albern 25-12-12456-1345 shouldn't use the be-contraction
 always albert 25-12-12456-2345 shouldn't use the be-contraction
@@ -1812,6 +2398,7 @@ always andalusier 235-145-25-136-234-24-12456 shouldn't use the ie-contraction
 midendword anebel 1-1345-15-12-13456 Andromedanebel shouldn't use the an-contraction
 before st always anfangs 235-124-235-1245-234
 before st always angriffs 235-1245-1235-24-124-124-234
+word angriffst 235-1245-1235-24-124-124-23456
 always anklage 235-13-123-1-12346 Anklagerede shouldn't use the er-contraction
 prfword anklagen 235-13-123-1-1245-14
 prfword anklagend 235-13-123-1-1245-14-145
@@ -1827,14 +2414,18 @@ begword anlagen 235-123-1-1245-14
 always anlauf 235-123-16-124 shouldn't use the auf-contraction
 before m always anleihe 235-123-146-125-15 Anleihemarkt shouldn't use the em-contraction
 before m always film =
-class egn egn
-before egn begword anti 235-2345-24
-before egn begword mini 134-35-24
-before egn begword multi =
-before egn begword poli =
-before egn begword quasi =
-before egn begword semi 234-12356-24
-always antichrist 235-2345-24-1456-1235-24-23456 shouldn't use the ich-contraction
+class cegn cegn
+before cegn begword anti 235-2345-24
+before cegn always alkali 25-13-25-24
+before cegn begword epi =
+before cegn always milli 134-24-12345-24
+before cegn begword mini 134-35-24
+before cegn begword multi =
+before cegn begword poli =
+before cegn begword quasi =
+before cegn begword semi 234-12356-24
+word seminar 234-12356-35-1-1235
+begword seminar 234-12356-35-356
 always anästh 235-345-234-2345-125 Anästhesie
 begword armee 356-134-15-15
 word armeen 356-134-15-14
@@ -1850,19 +2441,30 @@ word beines 12-1246-123456 shouldn't use the bei-contraction
 always bauform 12-16-124-26-134 shouldn't use the auf-contraction
 always beteuer 23-2345-126-12456 shouldn't use the te-contraction
 always beute 12-126-236 should use the eu-contraction
+always freibeuter 124-1235-146-12-126-2345-12456
+always wildbeuter 2456-24-123-145-12-126-2345-12456
 prfword beuten 12-126-2345-14 should use the eu-contraction
 always beutel 12-126-2345-13456 should use the eu-contraction
 always bssy 12-234-234-6-13456 shouldn't use the ss-contraction
 always bundes 12-256-145-123456 shouldn't use the und-contraction
 prfword chemikalie 1456-12356-24-13-25-24-15
-always donnerstag 145-135-1345-1345-12456-234-2345-1-1245 shouldn't use the st-contraction
-before g always samstag =
+
+always geheimdienst 12346-125-146-134-145-346-1345-23456 shouldn't overlap with dienstag
+before g always donnersta 145-135-1345-1345-12456-234-2345-1 shouldn't use the st-contraction
+before g always donnerstä 145-135-1345-1345-12456-234-2345-345 shouldn't use the st-contraction
+before g always samsta =
+before g always samstä =
+before g always ssamsta =
+before g always ssamstä =
 endword stag = shouldn't use the st-contraction
 endword stage 234-2345-1-12346
 endword stages 234-2345-1-1245-123456
-sufword eheinstitut 15-125-15-35-23456-24-2345-136-2345
-begword eheleu 15-125-15-123-126
-before g begword eherin 15-125-15-1235-35 Ehering(e) shouldn't use the er-contraction
+
+sufword ehe =
+word ehen 15-125-14
+word eher 15-125-12456
+sufword ehern 15-125-12456-1345
+midendword ehelich 2356-15-456
 midword ehilfs = Analysehilfsmittel shouldn't use the eh-contraction
 always einter 15-35-2345-12456 shouldn't use the ein-contraction
 always einteress 15-2-35 shouldn't use the ein-contraction
@@ -1871,7 +2473,8 @@ midendword enorm 15-1345-26-134 Aussprachenorm shouldn't use the en-contraction
 always emuskel 15-134-136-234-13-13456 shouldn't use the em-contraction
 always eschatolog 123456-1456-1-2345-135-123-135-1245 shouldn't use the sch-contraction
 always esther 123456-2345-125-12456 shouldn't use the st-contraction
-always ästhe 345-23456-125-15 ästhetisch
+before t always ästhe 345-23456-125-15 ästhetisch
+always ästhes 345-234-2345-125-123456 ästhesie
 midendword erecht 15-1235-2345
 midendword ericht 15-2-3456
 always erepublik 15-1235-13
@@ -1896,6 +2499,8 @@ always generation 1245-14-12456-5-1345
 begmidword generator 1245-14-12456-1-2345-26
 endword generator 1245-14-12456-1-2345-135-1235
 always generier 1245-14-12456-346-1235
+begmidword genital 1245-14-24-2345-25
+always genitiv 1245-14-24-2345-24-1236
 before t always gerä 12346-1235-345 should use the ge-contraction
 always geraet 12346-1235-345-2345 should use the ge-contraction
 always geräusch 12346-1235-34-156 should use the ge-contraction
@@ -1941,19 +2546,21 @@ always hotel 125-135-2345-13456 shouldn't use the te-contraction
 always installer 35-23456-1-12345-12456 shouldn't use the aller-contraction
 always internet 35-2345-12456-1345-15-2345 shouldn't use the te-contraction
 always interview 35-2345-12456-1236-24-15-2456 shouldn't use the ie-contraction
-after st always ionstrieb 245-234-2345-1235-346-12
-after st always ionstrupp 245-234-2345-1235-136-1234-1234
+after st always ionstrieb 24-135-1345-234-2345-1235-346-12
+after st always ionstrupp 24-135-1345-234-2345-1235-136-1234-1234
 always jubel 245-136-12-13456 shouldn't use the be-contraction
-always kaffee =
-endword kaffees 13-1-124-124-15-123456
 always komponist 13-135-134-1234-135-1345-24-23456 shouldn't use the nis-contraction
 always leselamp 123-123456-15-123-1-134-1234 shouldn't use the el-contraction
 always liechtenstein 123-346-1456-2345-14-23456-1246 shouldn't use the te-contraction
 prfword linie 123-35-24-15 shouldn't use the ie-contraction
+prfword llinie 123-123-35-24-15 shouldn't use the ie-contraction
 always richtlini 2-3456-123-35-24
-prfword materie 134-1-2345-12456-24-15 shouldn't use the ie-contraction
 always metallen 134-15-2345-1-12345-14 shouldn't use the allen-contraction
 always regel 1235-15-1245-13456
+before t always geregel 12346-1235-15-1245-13456
+before t always irregeleite 24-1235-1235-15-12346-123-146-236
+always lageregel 123-1-12346-1235-15-1245-13456
+always eregel 15-1235-15-1245-13456
 always release = shouldn't use the el-contraction
 always roboter 1235-135-12-135-2345-12456 shouldn't use the te-contraction
 always round 1235-135-256-145 shouldn't use the und-contraction
@@ -1964,19 +2571,20 @@ always bläschen 12-123-345-234-1456-14 shouldn't use the sch-contraction
 always döschen 145-246-234-1456-14 shouldn't use the sch-contraction
 always füsschen 124-1256-2346-1456-14
 always gläschen 1245-123-345-234-1456-14 shouldn't use the sch-contraction
+always hälschen 125-345-123-234-1456-14
 always häschen 125-345-234-1456-14 shouldn't use the sch-contraction
 always häuschen 125-34-234-1456-14 shouldn't use the sch-contraction
 always höschen 125-246-234-1456-14 should use the ch-contraction
 always küsschen 13-1256-2346-1456-14 shouldn't use the sch-contraction
 always lieschen 123-346-234-1456-14 shouldn't use the sch-contraction
+always mäuschen 134-34-234-1456-14
 always möschen 134-246-234-1456-14 should use the ch-contraction
 always näschen 1345-345-234-1456-14
 always radieschen 1235-1-145-346-234-1456-14 shouldn't use the sch-contraction
 always röschen 1235-246-234-1456-14 should use the ch-contraction
+always fröschen 124-1235-246-156-14 should use the sch-contraction
 
 begword rosaro = shouldn't use the ar-contraction
-midendword sammel 234-1-1346-13456 shouldn't use the sam-contraction
-midendword samml 234-1-1346-123 shouldn't use the sam-contraction
 endword schef 234-1456-15-124
 endword schefin 234-1456-15-124-35
 endword schefins 234-1456-15-124-35-234
@@ -2042,6 +2650,7 @@ always daenemark 145-345-1345-15-134-356-13 shouldn't use the em-contraction
 
 # names
 sufword aaron =
+word abbey =
 word angela 235-1245-13456-1 shouldn't use the ge-contraction
 word angeles 235-1245-13456-123456 shouldn't use the ge-contraction
 word angelika 235-1245-13456-24-13-1 shouldn't use the ge-contraction
diff --git a/Tables/Contraction/de-g0.ctb b/Tables/Contraction/de-g0.ctb
index 18a1ad15d..e8dc7e39f 100644
--- a/Tables/Contraction/de-g0.ctb
+++ b/Tables/Contraction/de-g0.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/de-g1.ctb b/Tables/Contraction/de-g1.ctb
index 3e6f87536..91c368261 100644
--- a/Tables/Contraction/de-g1.ctb
+++ b/Tables/Contraction/de-g1.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -22,6 +22,8 @@
 include de-g0.ctb
 
 class cst cst
+class e e
+class g g
 class s s
 class t t
 
@@ -64,24 +66,28 @@ always andalusier = shouldn't use the ie-contraction
 always asthma = shouldn't use the st-contraction
 before t always bundes = shouldn't use the st-contraction
 prfword chemikalie 1456-15-134-24-13-1-123-24-15 shouldn't use the ie-contraction
-always dienstag 145-346-1345-234-2345-1-1245 shouldn't use the st-contraction
-always donnerstag = shouldn't use the st-contraction
+
+before g always diensta 145-346-1345-234-2345-1 shouldn't use the st-contraction
+before g always dienstä 145-346-1345-234-2345-345 shouldn't use the st-contraction
+before g always donnersta = shouldn't use the st-contraction
+before g always donnerstä = shouldn't use the st-contraction
+before g always samsta = shouldn't use the st-contraction
+before g always samstä = shouldn't use the st-contraction
+
 always eschatolog 15-234-1456-1-2345-135-123-135-1245 shouldn't use the sch-contraction
 always esther = shouldn't use the st-contraction
 prfword folie = shouldn't use the ie-contraction
 sufword hoer 125-246-1235 should use the oe-symbol
 always interview = shouldn't use the ie-contraction
 always koffein = shouldn't use the ei-contraction
-always lilie = shouldn't use the ie-contraction
+before e always lili = shouldn't use the ie-contraction
 prfword linie 123-24-1345-24-15 shouldn't use the ie-contraction
-prfword materie = shouldn't use the ie-contraction
 always medien = shouldn't use the ie-contraction
 always museum = shouldn't use the eu-contraction
 always propriet = proprietär shouldn't use the ie-contraction
 always döschen 145-246-234-1456-15-1345
 always höschen 125-246-234-1456-15-1345 should use the ch-contraction
 word röschen 1235-246-234-1456-15-1345 should use the ch-contraction
-always samstag = shouldn't use the st-contraction
 word wisst = shouldn't use the st-contraction
 always vietnam = shouldn't use the ie-contraction
 
diff --git a/Tables/Contraction/de-g2.ctb b/Tables/Contraction/de-g2.ctb
index 85b260be9..045c96040 100644
--- a/Tables/Contraction/de-g2.ctb
+++ b/Tables/Contraction/de-g2.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/de-wort.cti b/Tables/Contraction/de-wort.cti
index 2699af409..1b16d8f6c 100644
--- a/Tables/Contraction/de-wort.cti
+++ b/Tables/Contraction/de-wort.cti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -71,6 +71,7 @@ always schachtel 156-56-2345-13456 shouldn't use the te-contraction
 always akkordeon 1-13-13-26-145-15-135-1345 Akkordeonist shouldn't use the nis-contraction
 always altersteilzeit 25-2345-12456-234-2345-146-123-1356-2345
 always alteurop 25-2345-126-1235-135-1234
+always sampel 234-1-134-1234-13456
 before cost always amts = shouldn't use the sch-contraction
 begmidword anachron 235-1-1456-1235-135-1345
 always analyse 235-25-6-13456-234-15
@@ -85,7 +86,17 @@ always anzeigenummer 235-1356-146-12346-1345-136-1346-12456
 always anzeigeröhr 235-1356-146-12346-1235-246-125-1235
 
 
-always appartement 1-1234-1234-356-2345-12356-14-2345
+always abonnement 1-12-135-1345-1345-15-134-14-2345
+always agreement 1-1245-1235-15-15-134-14-2345
+always amüsement 1-134-1256-234-15-134-14-2345
+always appartement 1-1234-1234-356-236-134-14-2345
+always bombardement 12-135-134-12-356-145-15-134-14-2345
+always implement 24-134-1234-123-15-134-14-2345
+always inkrement 35-13-1235-15-134-14-2345
+before t always komplemen 13-135-134-1234-123-15-134-14
+always konnossement 13-135-1345-1345-135-2346-15-134-14-2345
+before t always reglemen 1235-15-1245-123-15-134-14
+before t always temperamen 2345-12356-1234-12456-1-134-14
 
 always arbeitgeber 356-12-12346-12-12456 shouldn't use the be-contraction
 always auftraggeber 2-16-2345-1245-12346-12-12456
@@ -125,7 +136,9 @@ prfword badender 12-1-145-14-145-12456
 prfword badendes 12-1-145-14-145-123456
 prfword bades 12-1-145-123456
 
+always bacterium 12-1-6-14-2345-12456-24-136-134 shouldn't use the te-contraction
 always bakteri 12-1-13-2345-12456-24 shouldn't use the te-contraction
+always deuterium 145-126-2345-12456-24-136-134 shouldn't use the te-contraction
 always basis =
 prfword basisch 12-1-234-24-156
 prfword basische 12-1-234-24-156-15
@@ -198,6 +211,7 @@ always dünnbein 145-1256-1345-1345-12-1246
 always eisbein 146-234-12-1246
 before st begword eis 146-234
 always elfenbein 13456-124-14-12-1246 shouldn't use the bei-contraction
+always telfenbein 2345-13456-124-14-12-1246 shouldn't use the bei-contraction
 always federbein 124-15-145-12456-12-1246
 always felsenbein 124-13456-234-14-12-1246
 always fersenbein 124-12456-234-14-12-1246
@@ -306,6 +320,12 @@ always beschwerd 23-156-2456-12456-145 shouldn't use the werd-contraction
 before hilmnrsu always beschwerde 23-156-2456-12456-145-15 shouldn't use the werd-contraction
 prfword beschwerden 23-156-2456-12456-145-14 shouldn't use the werd-contraction
 endword betrieben 23-2345-1235-346-12-14
+always binär =
+word binational 12-24-1345-5-1345-1-123
+begword binational 12-24-1345-5-1345-25
+word binomial 12-24-1345-135-134-24-1-123
+begword binomial 12-24-1345-135-134-24-25
+always binomisch 12-24-1345-135-134-24-156
 always bindehaut 12-35-145-15-125-16-2345 shouldn't use the eh-contraction
 always bindehäu 12-35-145-15-125-34 shouldn't use the eh-contraction
 always bindemittel 12-35-145-15-134-2345 shouldn't use the dem-contraction
@@ -313,10 +333,8 @@ always schaummittel 156-16-134-134-2345 shouldn't use the mm-contraction
 always bibel 12-24-12-13456 shouldn't use the be-contraction
 sufword bistro 12-24-23456-1235-135 shouldn't use the bist-contraction
 sufword blau 12-123-16
-always blaubeer 12-123-16-12-15-15-1235
 before g always bleiber 12-123-146-12-12456 shouldn't use the bleib-contraction
 sufword bogen 12-135-1245-14 shouldn't use the ge-contraction
-always brombeer =
 before hilmnrsu always bronze =
 before e always brück 12-1235-1256-46 shouldn't use the rück-contraction
 always abrück 1-12-1235-46 should use the rück-contraction
@@ -325,6 +343,8 @@ always bibliograph = bibliographieren shouldn't use the hier-contraction
 sufword bistum = shouldn't use the st-contraction
 sufword bistüm = shouldn't use the st-contraction
 
+always blues =
+
 always bomben 12-135-134-12-14
 always bomber 12-135-134-12-12456
 
@@ -371,32 +391,40 @@ begword ideal 24-145-15-25
 
 # Französische Berufsbezeichnungen mit -eur
 always adapteur 1-145-1-1234-2345-126-1235
+always akteur 1-13-2345-126-1235 shouldn't use the te-contraction
 always amateur 1-134-1-2345-126-1235
 always samateur 234-1-134-1-2345-126-1235
 always animateur 235-24-134-1-2345-126-1235
 always akquisiteur 1-13-6-12345-136-24-234-24-2345-126-1235
 always bankrotteur 12-235-13-1235-135-2345-2345-126-1235
 always dekorateur 145-15-13-26-1-2345-126-1235 shouldn't use the te-contraction
+always demonteur 145-15-134-135-1345-2345-126-1235
 always deserteur 145-123456-12456-2345-126-1235
 always destillateur 145-15-23456-24-12345-1-2345-126-1235
 always dompteur 145-135-134-1234-2345-126-1235
 always eskamoteur 123456-13-1-134-135-2345-126-1235
 sufword exporteur 1346-1234-26-2345-126-1235
 midendword exporteur 15-6-1346-1234-26-2345-126-1235
+always ingenieur 35-1245-14-24-126-1235
 always inspekteur 35-234-1234-15-13-2345-126-1235
 always einspekteur 15-35-234-1234-15-13-2345-126-1235
 always installateur 35-23456-1-12345-1-2345-126-1235
 always einstallateur 15-35-23456-1-12345-1-2345-126-1235
 always instrukteur 35-23456-1235-136-13-2345-126-1235
 always einstrukteur 15-24-12456-135-136-13-2345-126-1235
+always interieur 35-2345-12456-24-126-1235
 always kollaborateur 13-135-12345-1-12-26-1-2345-126-1235
 always kompositeur 13-135-134-1234-135-234-24-2345-126-1235
 always kondukteur 13-135-1345-145-136-13-2345-126-1235
 always konstrukteur 13-135-1345-23456-1235-136-13-2345-126-1235
 always monteur 134-135-1345-2345-126-1235
 always operateur 135-1234-12456-1-2345-126-1235
+always porteur 1234-26-2345-126-1235
+sufword profiteur 12345-124-24-2345-126-1235
+midendword profiteur 1234-1235-135-124-24-2345-126-1235
 sufword provokateur 12345-1236-135-13-1-2345-126-1235
 midendword provokateur 1234-1235-135-1236-135-13-1-2345-126-1235
+always reparateur 1235-15-1234-356-1-2345-126-1235
 always requisiteur 1235-15-6-12345-136-24-234-24-2345-126-1235
 always restaurateur 1235-15-23456-16-1235-1-2345-126-1235
 always saboteur 234-1-12-135-2345-126-1235
@@ -408,10 +436,31 @@ always sspediteur 234-234-1234-15-145-24-2345-126-1235
 always stuckateur 23456-136-46-1-2345-126-1235
 
 always dehydr =
-always demontage 145-15-134-135-1345-2345-1-12346 shoudln't use the dem-contraction
-always demoralis 145-15-13-26-25-24-234
+always deifizier 145-15-24-124-24-1356-346-1235
+begmidword deindustrial 145-15-35-145-136-23456-1235-24-25
+always deinstall 145-15-35-23456-1-12345
+always deinstitutionalis 145-15-35-23456-24-2345-136-2345-24-135-1345-25-24-234
+always deismus 145-15-5-24
+always deistisch 145-15-5-156
+always delokalis 145-15-123-135-13-25-24-234
+before g always demago 145-12356-1-1245-135
+word demand 145-12356-235-145
+always demarkation 145-15-134-356-13-5-1345
+always demarkier 145-15-134-356-13-346-1235
+always dementier 145-12356-14-2345-346-1235
+always demenz 145-12356-14-1356
+always demineralis 145-15-134-35-12456-25-24-234
+always demograph 145-12356-135-1245-1235-1-1234-125
+before g always demonta 145-15-134-135-1345-2345-1 shoudln't use the dem-contraction
+always demontier 145-15-134-135-1345-2345-346-1235
+always demoralis 145-15-134-26-25-24-234
 begword demotiv =
+always demystifizier 145-15-134-6-13456-23456-24-124-24-1356-346-1235
+always degradier 145-15-1245-1235-1-145-346-1235 should use the ie-contraction
 always delegation 145-15-123-15-1245-5-1345 shouldn't use the el-contraction
+always delegitim 145-15-123-15-1245-24-2345-24-134
+always deradikalis 145-15-1235-1-145-24-13-25-24-234
+
 always diagnose =
 prfword diagnosen 145-24-1-1245-1345-135-234-14
 before konsonant always diagnosen 145-24-1-1245-1345-135-234-14
@@ -428,7 +477,9 @@ sufword drogen 145-1235-135-1245-14 shouldn't use the ge-contractionalways eheli
 before e always einreise 1246-1235-146-234-15
 always eissport 146-234-234-1234-26-2345
 always eisstau 146-234-23456-16 eisstau eisstaub gleisstaub
-#before t always elemen 13456-15-134-14
+sufword eitel 146-2345-13456 shouldn't use the te-contraction
+sufword eiter 146-2345-12456 shouldn't use the te-contraction
+before t always elemen 13456-15-134-14
 always erdbeben 12456-145-23-12-14
 always erpresser 12456-1234-1235-15-2346-12456
 always estragon 123456-2345-1235-1-1245-135-1345 # trag?
@@ -449,8 +500,12 @@ sufword meta =
 sufword metalband 134-15-2345-25-12-235-145
 prfword metalfan 134-15-2345-25-124-1-1345
 prfword metalfans 134-15-2345-25-124-235-234
+sufword kontra =
+sufword kontrahier 13-135-1345-2345-1235-1-125-346-1235
+word kontrastabfalls 13-135-1345-2345-1235-1-23456-1-12-124-12345-234
 sufword para 1234-356-1
 sufword supra =
+always supraleit 234-136-1234-1235-1-123-146-2345
 sufword ultra =
 
 always fangein 124-235-1245-1246 shouldn't use the ge-contraction
@@ -462,6 +517,9 @@ sufword foto =
 sufword fund 124-256-145 shouldn't use the und-contraction
 sufword gallen 1245-1-12345-14 shouldn't use the allen-contraction
 sufword gamma 1245-1-1346-1
+always altentages 25-2345-14-2345-1-1245-123456 shouldn't use the ge-contraction
+always ganztages 1245-1356-2345-1-1245-123456 shouldn't use the ge-contraction
+always garten 1245-356-2345-14 shouldn't use the te-contraction
 always gaufürst 1245-16-124-1256-1235-2345 shouldn't use the auf-contraction
 
 before hilmnrsu always gebäude 12346-12-34-145-15
@@ -477,6 +535,7 @@ always gefangenen 12346-124-235-1245-14-14
 sufword gehäuse 12346-125-34-234-15
 prfword gehäusen 12346-125-34-234-14
 prfword gehäuses 12346-125-34-234-123456
+before cost always geistes 1245-146-23456-123456
 always geruch 12346-1235-136-1456 shouldn't use the er-contraction
 always gerüst 12346-1235-1256-23456 shouldn't use the er-contraction
 always gesund 12346-234-256-145
@@ -526,7 +585,10 @@ always gorgonzola 1245-26-1245-135-1345-1356-135-123-1
 sufword gottes 1245-135-2345-2345-123456
 always gottesdienst 1245-135-2345-2345-123456-145-346-1345-23456
 always grippeimpf = shouldn't use the ei-contraction
-always glastrepp = shouldn't use the st-contraction
+before cost always glas =
+always plexiglas 1234-123-15-6-1346-24-1245-123-1-234 shouldn't use the ig-contraction
+always schwinglasch 156-2456-35-1245-123-1-156
+prfword glast 1245-123-1-23456
 before cost always abgas =
 before cost always bonus =
 word bonusse 12-135-1345-136-2346-15
@@ -545,6 +607,11 @@ always gürtel 1245-1256-1235-2345-13456 shouldn't use the te-contraction
 always guertel 1245-1256-1235-2345-13456 shouldn't use the te-contraction
 before t always habich 125-1-12-3456
 prfword haie =
+prfword hain =
+prfword haine =
+prfword hainen 125-1-24-1345-14
+prfword haines 125-1-24-1345-123456
+prfword hains =
 always häresie 125-345-1235-15-234-346 shouldn't use the es-contraction
 always haeresie 125-345-1235-15-234-346 shouldn't use the es-contraction
 sufword hallen 125-1-12345-14 shouldn't use the allen-contraction
@@ -556,7 +623,7 @@ always haustein 125-16-23456-1246
 
 always health =
 before cost always heeres 125-15-15-1235-123456
-always heidelbeer 125-146-145-13456-12-15-15-1235
+begword heimat 125-146-134-1-2345 shouldn't allow te-contraction and possibly overlaps with materi(e)
 always ehebel 15-125-15-12-13456
 always eherstell 15-125-12456-2-13456
 always hetero 125-15-2345-12456-135 shoudln't use the te-contraction
@@ -568,10 +635,8 @@ always gehilfen 12346-125-24-123-124-14
 
 before t always hilfs =
 prfword hilfst 125-24-123-124-23456
-always himbeer =
 sufword hirse =
 sufword holunder 125-135-123-256-145-12456
-sufword holunderbeer 125-135-123-256-145-12456-12-15-15-1235
 always hungrig 125-256-1245-1235-45 shouldn't use the ung-contraction
 always hypnose =
 prfword hypnosen 125-6-13456-1234-1345-135-234-14
@@ -582,7 +647,6 @@ always indoor 35-145-135-135-1235 shouldn't use the or-contraction
 before t always infraro 35-124-1235-1-1235-135
 always insolvenz 35-234-135-123-1236-14-1356 shouldn't use the so-contraction
 always johannis 245-135-125-235-1345-24-234
-always johannisbeer 245-135-125-235-1345-24-234-12-15-15-1235
 always jubiläum = shouldn't use the äu-contraction
 always jubilaeum = shouldn't use the äu-contraction
 always kabel 13-1-12-13456
@@ -596,17 +660,16 @@ always karies 13-356-24-123456
 before hilmnrsu always karriere 13-356-1235-24-12456-15
 prfword karrieren 13-356-1235-24-12456-14
 prfword kastanie 13-1-23456-235-24-15
+always kaufpreis 13-16-124-1234-1235-146-234
 always kavallerie 13-1-1236-1-12345-12456-346 shouldn't use the aller-contraction
 prfword kavallerien 13-1-1236-1-12345-12456-24-14 shouldn't use the aller-contraction
 always kavallerist 13-1-1236-1-12345-12456-24-23456 shouldn't use the aller-contraction
 always keyboard =
+always kitaleit 13-24-2345-1-123-146-2345 shouldn't use the al-contraction
+always klageruf 13-123-1-12346-123-136-124
 sufword klang 13-123-235-1245 shouldn't use the lang-contraction
-always klasse 13-123-1-2346-15
-always klassen 13-123-1-2346-14
-always klassifi 13-123-1-2346-24-124-24 shouldn't use the lass-contraction
-always klassisch 13-123-1-2346-24-156 shouldn't use the lass-contraction
 sufword klebe 13-123-15-23 shouldn't use the leb-contraction
-endword klebe 13-123-15-23 shouldn't use the leb-contraction
+endword klebe = shouldn't use the leb-contraction
 endword kleber 13-123-15-12-12456 shouldn't use the leb-contraction
 endword klebern 13-123-15-12-12456-1345 shouldn't use the leb-contraction
 endword klebers 13-123-15-12-12456-234 shouldn't use the leb-contraction
@@ -636,6 +699,7 @@ always palisander 1234-25-24-234-235-145-12456
 always salamander 234-25-1-134-235-145-12456
 
 always kriteri 13-1235-24-2345-12456-24 shouldn't use the te-contraction
+prfword kurie =
 prfword kurzeit 13-136-1235-1356-146-2345
 prfword kurzeiten 13-136-1235-1356-146-2345-14
 always kurzentren 13-136-1235-1356-14-2345-1235-14
@@ -651,6 +715,7 @@ always auslauf 16-234-123-16-124
 always laufbahn 123-16-124-12-1-125-1345
 always laufband 123-16-124-12-235-145
 always laufbänd 123-16-124-12-345-1345-145
+always laufgitter 123-16-124-1245-24-2345-2345-12456
 always laufrad 123-16-124-1235-1-145
 always laufräd 123-16-124-1235-345-145
 always laufstall 123-16-124-23456-1-12345
@@ -779,10 +844,13 @@ always wolkenmeer 2456-135-123-13-14-134-15-15-1235
 prfword beet =
 prfword beete 12-15-15-236
 prfword beeten 12-15-15-2345-14
+prfword beetes 12-15-15-2345-123456
 prfword beets 12-15-15-2345-234
 
 begword mengen 134-14-1245-14 shouldn't use the ge-contraction
 
+sufword mensa 134-14-234-1 mensagebäude, mensaleitung, mensamitglied
+
 always merkmal 134-12456-13-134
 
 before s always mess 134-15-2346
@@ -795,10 +863,12 @@ always milieu 134-24-123-24-126 shouldn't use the ie-contraction
 prfword mitte 134-24-2345-236
 prfword mitten 134-24-2345-2345-14
 always mitternacht 134-24-2345-2345-12456-1345-56-2345 shoudln't use the mit-contraction
+always mitternächt 134-24-2345-2345-12456-1345-345-1456-2345 shoudln't use the mit-contraction
 always mittlung 134-24-2345-2345-123-136 shouldn't use the mit-contraction
 prfword moore =
 prfword mooren 134-135-135-1235-14
 prfword moores 134-135-135-1235-123456
+prfword moors =
 
 always mmöbel 134-134-246-12-13456 shouldn't use the mm-contraction
 
@@ -850,12 +920,11 @@ always pegel 1234-15-1245-13456
 always pestorahm 1234-15-23456-135-1235-1-125-134
 begword pferde 1234-124-12456-145-15
 always pferderass 1234-124-12456-145-15-1235-1-2346
-endword pferden 1234-124-12456-145-14
+prfword pferden 1234-124-12456-145-14
 always philosoph = shouldn't use the so-contraction
 before lnr always pizza =
 always ⠏⠇⠁⠞⠑⠁⠥ =
 always prall 1234-1235-1-12345 shouldn't use the aller- or allen-contraction
-always preiselbeer 1234-1235-146-234-13456-12-15-15-1235
 always premier 1234-1235-12356-24-12456
 before hilmnrsu always presse 1234-1235-15-2346-15
 prfword pressen 1234-1235-15-2346-14
@@ -879,6 +948,11 @@ before m always arm 356-134
 before m always baum 12-16-134
 before m always konsum =
 before m always raum 1235-16-134
+prfword eraum 15-1235-16-134
+prfword eraums 15-1235-16-134-234
+prfword eraumes 15-1235-16-134-123456
+prfword eräume 15-1235-34-134-15
+prfword eräumen 15-1235-34-134-14
 before m always schirm 156-24-1235-134
 before m always strom 23456-1235-135-134
 before m always lärm =
@@ -910,16 +984,17 @@ prfword kriegst 13-1235-346-1245-23456
 
 
 always rechteinhaber 1235-2345-15-35-2-125-12456 shouldn't use the ein-contraction
+always reichstag 1235-146-1456-234-2345-1-1245 shouldn't use the st-contraction
 before e always reise 1235-146-234-15
 always relief 1235-13456-24-15-124 shouldn't use the ie-contraction
 sufword renten 1235-14-2345-14 shouldn't use the te-contraction
-always requiem 1235-15-6-12345-24-12356
+always requiem 1235-15-6-12345-136-24-12356
 
 before hilmnrsu always reserve 1235-123456-12456-1236-15
 prfword reserven 1235-123456-12456-1236-14
 before t always resulta =
 
-always rhabarber 1235-125-1-12-1-1235-12-12456
+always rhabarber 1235-125-1-12-356-12-12456
 always röntgen 1235-246-1345-2345-1245-14 shouldn't use the ge-contraction
 prfword runde 1235-256-145-15
 prfword runden 1235-256-145-14
@@ -951,6 +1026,10 @@ always speise 234-1234-146-234-15
 prfword speisen 234-1234-146-234-14
 prfword speisend 234-1234-146-234-14-145
 prfword speisende 234-1234-146-234-14-145-15
+prfword speisendem 234-1234-146-234-14-145-12356
+prfword speisenden 234-1234-146-234-14-145-14
+prfword speisender 234-1234-146-234-14-145-12456
+prfword speisendes 234-1234-146-234-14-145-123456
 always schaufel 156-16-124-13456 shouldn't use the auf-contraction
 always schaufenster 156-16-124-14-23456-12456 shouldn't use the auf-contraction
 before l always schul 156-136-123
@@ -983,6 +1062,7 @@ before hilmnrsu always see =
 always seelen 234-15-15-123-14
 always serie 234-12456-24-15 shouldn't use the ie-contraction
 always serien 234-12456-24-14 shouldn't use the ie-contraction
+always inserier 35-234-12456-346-1235
 before e always sohl = shouldn't use the so-contraction
 sufword solar 234-135-123-356
 begmidword solidar 234-135-123-24-145-356 shouldn't use the so-contraction
@@ -999,7 +1079,14 @@ always spielhall 2-346-125-1-12345 shouldn't use the all-contraction
 before g always staublun 23456-16-12-123-256 shouldn't use the ung-contraction
 before e always studi 23456-136-145-24 shouldn't use the ie-contraction
 always studier 23456-136-145-346-1235
+
+always schromato 234-1456-1235-135-134-1-2345-135
+always schromosom 234-1456-1235-135-134-135-234-135-134
 always schronik 234-1456-1235-135-1345-24-13
+always schronist 234-1456-1235-135-1345-24-23456
+always schronolo 234-1456-1235-135-1345-135-123-135
+always schronometer 234-1456-1235-135-1345-135-134-15-2345-12456
+
 always srundfahr 234-1235-256-145-2-1235
 before t always stranspor 234-2345-1235-235-234-1234-26
 always stradition =
@@ -1011,6 +1098,64 @@ always tabasco =
 always stabell 234-2345-1-23-12345
 always teacher 2345-15-1-1456-12456
 always teaching 2345-15-1-1456-35-1245
+
+always stafel 234-2345-1-124-13456
+always staktik =
+always stanzgrupp 234-2345-235-1356-1245-1235-136-1234-1234
+always starif 234-2345-356-24-124
+always statbestand 234-2345-1-2345-23-2-23456
+always statbeständ 234-2345-1-2345-23-5-23456
+always statsach 234-2345-1-2345-234-56
+always stauglich 234-2345-16-1245-456
+always stechnolog 234-236-1456-1345-135-123-135-1245
+always stelefon 234-2345-13456-15-124-135-1345
+always stelephon 234-2345-13456-15-1234-125-135-1345
+always stelegraf 234-2345-13456-15-1245-1235-1-124
+always stelegraph 234-1245-13456-15-1245-1235-1-1234-125
+always stelegramm 234-2345-13456-15-1245-1235-1-1346
+always stäuschung 234-2345-34-156-136
+always stheater 234-2345-125-15-1-2345-12456
+always sthema 234-2345-125-12356-1
+always sthemen 234-2345-125-12356-14
+always stheolog 234-2345-125-15-135-123-135-1245
+always stheoreti 234-2345-125-15-26-15-2345-24
+always stheorie 234-2345-125-15-26-346
+always stheorien 234-2345-125-15-26-24-14
+before t always stherapeu 234-2345-125-12456-1-1234-126
+always stilgung 234-2345-24-123-1245-136
+prfword stod =
+prfword stode =
+always stoleranz 234-2345-135-123-12456-235-1356
+always stourismus 234-2345-135-136-1235-5-24
+always stourist 234-2345-135-136-1235-24-23456
+always strainer 234-2345-1235-1-24-1345-12456
+always straining 234-2345-1235-1-24-1345-35-1245
+always strächtig 234-2345-1235-345-1456-2345-45
+always stransakt 234-2345-1235-235-234-1-13-2345
+always stransfer 234-2345-1235-235-234-124-12456
+always stransform 234-2345-1235-235-234-124-26-134
+endword stransistor 234-2345-1235-235-234-24-23456-135-1235
+midword stransistor 234-2345-1235-235-234-24-23456-26
+always stranszenden 234-2345-1235-235-234-1356-14-145-14
+always strennung 234-2345-1235-14-1345-136
+always strocknung 234-2345-1235-135-46-1345-136
+always strümmer 234-2345-1235-1256-1346-12456
+prfword stuch 234-2345-136-1456
+prfword stuches 234-2345-136-1456-123456
+prfword stuchs 234-2345-136-1456-234
+prfword stücher 234-2345-1256-1456-12456
+prfword stüchern 234-2345-1256-1456-12456-1345
+always stüchtig 234-2345-1256-1456-2345-45
+always sturnier 234-2345-136-1235-1345-346-1235
+prfword stests 234-236-23456-234
+prfword styp =
+prfword stypen 234-2345-6-13456-1234-14
+prfword styps =
+always stypisch 234-2345-6-13456-1234-24-156
+prfword stypus =
+
+
+
 prfword tee =
 prfword tees =
 
@@ -1022,18 +1167,28 @@ always steilheit 23456-146-123-125
 before hilmnrsu always teilnahme 2345-146-123-1345-134-15
 prfword teilnahmen 2345-146-123-1345-134-14
 always steilnehm 234-2345-146-123-1345-125
+
 always telefon 2345-13456-15-124-135-1345
-always stelefon 234-2345-13456-15-124-135-1345
+always telephon 2345-13456-15-1234-125-135-1345
+always telegraf 2345-13456-15-1245-1235-1-124
+always telegraph 2345-13456-15-1245-1235-1-1234-125
+always telegramm 2345-13456-15-1245-1235-1-1346
+always telematik 2345-13456-12356-1-2345-24-13
+always telemetr 2345-13456-12356-15-2345-1235
+always telekomm 2345-13456-15-13-1346
 always teleskop 2345-13456-123456-13-135-1234
 always temperatur 2345-12356-1234-12456-1-2345-136-1235 prefer em-contraction over te-contraction
 always stemperatur 234-2345-12356-1234-12456-1-2345-136-1235 prefer em-contraction over te-contraction
+always temperier 2345-12356-1234-12456-346-1235 prefer em-contraction over te-contraction
 always tempo 2345-12356-1234-135
 prfword temporal 2345-12356-1234-26-1-123
 begmidword temporal 2345-12356-1234-26-25
 always temporär 2345-12356-1234-26-345-1235
+always stermin 234-2345-12456-134-35
 always stochter 234-2345-135-1456-2345-12456
 always stöchter 234-2345-246-1456-2345-12456
 always strubel 234-2345-1235-136-12-13456 shouldnt use the st- nor the be-contraction
+always tempel 2345-12356-1234-13456 shouldn't use the te-contraction
 word tempore 2345-12356-1234-26-15
 always stendenz 234-2345-14-145-14-1356
 prfword teuer 2345-126-12456 shouldn't use the te-contraction
@@ -1055,6 +1210,10 @@ midendword ungsobjek 136-234-135-12-245-15-13 shouldn't use the so-contraction
 always überbrück 2-1256-12-1235-1256-46
 sufword vasallen 1236-1-234-1-12345-14 shouldn't use the allen-contraction
 always vegetarier 1236-15-12346-2345-356-24-12456
+midendword vergeud 1236-12456-1245-126-145
+begword vergeud 36-1245-126-145
+midendword verteuer 1236-12456-2345-126-12456
+begword verteuer 36-2345-126-12456
 begword verwalter 36-2456-25-2345-12456 shouldn't use the te-contraction
 midendword verwalter 1236-12456-2456-25-2345-12456 shouldn't use the te-contraction
 before hilmnrsu always vize =
@@ -1077,6 +1236,8 @@ prfword wärmerem 2456-345-1235-134-12456-12356
 prfword wärmeren 2456-345-1235-134-12456-14
 prfword wärmerer 2456-345-1235-134-12456-23456
 prfword wärmeres 2456-345-1235-134-12456-123456
+prfword wärmern 2456-345-1235-134-12456-1345
+prfword wärmers 2456-345-1235-134-12456-234
 always wärmend 2456-345-1235-134-14-145
 always wärmens 2456-345-1235-134-14-234
 
@@ -1085,6 +1246,8 @@ always wiese 2456-346-234-15 shouldn't use the wie-contraction
 always wiesen 2456-346-234-14 shouldn't use the wie-contraction
 before cost always wirtschafts 2456-156-234
 before cost always wissenschafts 2456-2346-14-156-234
+before l always wurzel 2456-136-1235-1356-13456
+
 before lnr always yoga =
 always ziegel 1356-346-1245-13456 shouldn't use the ge-contraction
 sufword ziel 1356-346-123
@@ -1104,10 +1267,62 @@ always zypressen 1356-6-13456-1234-1235-15-2346-14
 
 # Doppelvokale
 always cherokee 1456-12456-135-13-15-15
+always dekolletee 145-15-13-135-12345-15-2345-15-15
+always ackerbeer 1-46-12456-12-15-15-1235
+always apfelbeer 1-1234-124-13456-12-15-15-1235
+always beerenart 12-15-15-1235-14-356-2345
+always beerenförmig 12-15-15-1235-14-124-246-1235-134-45
+always bickbeer 12-24-46-12-15-15-1235
+always blaubeer 12-123-16-12-15-15-1235
+always blutbeer =
+always bockbeer 12-135-46-12-15-15-1235
+always brombeer =
+always boysenbeer 12-135-6-13456-234-14-12-15-15-1235
 always erdbeer 12456-145-12-15-15-1235
+always essigbeer 15-2346-45-12-15-15-1235
+always felsenbeer 124-13456-234-14-12-15-15-1235
+always fliederbeer 124-123-346-145-12456-12-15-15-1235
+always gewürzbeer 12346-2456-1256-1235-1356-12-15-15-1235
+always giftbeer =
+always heidelbeer 125-146-145-13456-12-15-15-1235
+always himbeer =
+always holunderbeer 125-135-123-256-145-12456-12-15-15-1235
+always johannisbeer 245-135-125-235-1345-24-234-12-15-15-1235
+always kermesbeer 13-12456-134-123456-12-15-15-1235
+always korallenbeer 13-135-1235-1-12345-14-12-15-15-1235
+always krähenbeer 13-1235-345-125-14-12-15-15-1235
+always lorbeer 123-26-12-15-15-1235
+always maibeer =
+always maulbeer 134-16-123-12-15-15-1235
+always mehlbeer 134-2356-123-12-15-15-1235
+always moorbeer =
+always moosbeer =
+always nachtbeer 1345-56-2345-12-15-15-1235
+always nagelbeer 1345-1-1245-13456-12-15-15-1235
+always nebelbeer 1345-15-12-13456-12-15-15-1235
+always panzerbeer 1234-235-1356-12456-12-15-15-1235
+always pfefferbeer 1234-124-15-124-124-12456-12-15-15-1235
+always pimentbeer 1234-24-134-14-2345-12-15-15-1235
+always preiselbeer 1234-1235-146-234-13456-12-15-15-1235
+always sandbeer 234-235-145-12-15-15-1235
+always schneebeer 156-1345-15-15-12-15-15-1235
+always schwarzbeer 156-2456-356-1356-12-15-15-1235
+always stachelbeer 23456-56-13456-12-15-15-1235
+always stechbeer 23456-15-1456-12-15-15-1235
+always steinbeer 23456-1246-12-15-15-1235
+always sumpfbeer =
+always vogelbeer 1236-135-1245-13456-12-15-15-1235
+always wacholderbeer 2456-56-135-123-145-12456-12-15-15-1235
 always waldbeer 2456-25-145-12-15-15-1235
+always weinbeer 2456-1246-12-15-15-1235
+always weißbeer 2456-146-6-2346-12-15-15-1235
+always winterbeer 2456-35-2345-12456-12-15-15-1235
+always wolfsbeer =
+always wunderbeer 2456-256-145-12456-12-15-15-1235
 always zwergerdbeer 1356-2456-12456-1245-12456-145-12-15-15-1235
+always zwieselbeer 1356-2456-346-234-13456-12-15-15-1235
 always frisbee 124-1235-24-234-12-15-15
+before e always galeer 1245-25-15-15-1235
 always haar =
 always heer =
 always leer =
@@ -1118,6 +1333,7 @@ always dragee =
 always bungee 12-256-1245-15-15
 always dorothee 145-26-135-2345-125-15-15
 always cheese 1456-15-15-234-15
+always paneel 1234-235-15-15-123
 always pappmaschee 1234-1-1234-1234-134-1-156-15-15
 always klischee 13-123-24-156-15-15
 always yankee 6-13456-235-13-15-15
@@ -1167,5 +1383,142 @@ always shampoo =
 always tattoo =
 always daewoo =
 always zoo =
-always zücht 1356-1256-1456-2345
 
+sufword teer =
+sufword geteer 12346-2345-15-15-1235
+prfword teer =
+prfword teeren 2345-15-15-1235-14
+prfword teers =
+always teergeschmack 2345-15-15-1235-12346-156-134-1-46
+
+always birkenmoor 12-24-1235-13-14-134-135-135-1235
+always buschmoor 12-136-156-134-135-135-1235
+always ekelmoor 15-13-13456-134-135-135-1235
+always flachmoor 124-123-56-134-135-135-1235
+always galgenmoor 1245-25-1245-14-134-135-135-1235
+always grasmoor =
+always hangmoor 125-235-1245-134-135-135-1235
+always heidemoor 125-146-145-15-134-135-135-1235 shouldn't use the dem-contraction
+
+before t always züch 1356-1256-1456
+
+always käse 13-345-234-15
+always käserei 13-345-234-12456-146
+always käsereib 13-345-234-15-1235-146-12
+always käsereibetrie 13-345-234-12456-146-23-2345-1235-346
+always käsereifen 13-345-234-15-1235-146-124-14
+always käsereifung 13-345-234-15-1235-146-124-136
+prfword käsen 13-345-234-14
+prfword käses 13-345-234-123456
+
+always niveau 1345-24-1236-15-16
+always plateau 1234-123-1-2345-15-16
+
+always busschaffner 12-136-234-156-1-124-124-1345-12456
+before t always busschnit 12-136-234-156-1345-24-2345
+prfword bussektor =
+always bussektor 12-136-234-234-15-13-2345-26
+always bussteuer 12-136-234-23456-126-12456
+always busstreck 12-136-234-23456-1235-15-46
+always bussystem 12-136-234-234-6-13456-23456-12356
+
+always reisehafen 1235-146-234-15-125-1-124-14
+always reisehäfen 1235-146-234-15-125-345-124-14
+always reiseland 1235-146-234-15-123-235-145 shouldn't use the el-contraction
+always reiseländer 1235-146-234-15-123-345-1345-145-12456 shouldn't use the el-contraction
+before e always autoreis 16-2345-135-1235-146-234
+always autorennbahn 16-2345-135-1235-14-1345-12-1-125-1345
+word autorennen 16-2345-135-1235-14-1345-14
+word autorennens 16-2345-135-1235-14-1345-14-234
+always autorennfahr 16-2345-135-1235-14-1345-2-1235
+always reisespezialist 1235-146-234-15-234-1234-15-1356-24-25-24-23456
+before hilmnrsu always service 234-12456-1236-24-6-14-15
+prfword services 234-12456-1236-24-6-14-123456
+before t always reiserou 1235-146-234-15-1235-135-136
+before t always reisemona 1235-146-234-15-134-135-1345-1
+always reisesaison 1235-146-234-15-234-1-24-234-135-1345 shouldn't use the es-contraction
+before e always rundreis 1235-256-145-1235-146-234
+
+before hilmnrsu begword lade =
+word laden 123-1-145-14
+sufword ladenadress 123-1-145-14-1-145-1235-15-2346
+sufword ladenangebo 123-1-145-14-235-12346-12-135
+sufword ladenanschlag 123-1-145-14-235-156-1245
+sufword ladenartikel 123-1-145-14-356-2345-24-13-13456
+sufword ladenatelier 123-1-145-14-1-2345-13456-24-12456
+sufword ladenauf 123-1-145-14-2-16
+sufword ladenaus 123-1-145-14-16-234
+sufword ladeneigen 123-1-145-14-146-1245-14
+sufword ladenein 123-1-145-14-1246
+sufword ladeneröffn 123-1-145-14-12456-246-124-124-1345
+sufword ladeninhab 123-1-145-14-35-2-125
+sufword ladeninvent 123-1-145-14-35-1236-14-2345
+sufword ladenöffn 123-1-145-14-246-124-124-1345
+sufword ladenumbau 123-1-145-14-136-134-12-16
+word lader 123-1-145-12456
+word ladern 123-1-145-12456-1345
+word laders 123-1-145-12456-234
+
+
+before konsonant begword laden 123-1-145-14
+
+before hilmnrsu begword lese 123-123456-15
+word lesen 123-123456-14
+sufword lesend 123-123456-14-145
+sufword lesens 123-123456-14-234
+word leser 123-123456-12456
+sufword leseranaly 123-123456-12456-235-25-6-13456
+before g begword leseranfra 123-123456-12456-235-124-1235-1
+sufword leseranteil 123-123456-12456-235-2345-146-123
+sufword leserartikel 123-123456-12456-356-2345-24-13-13456
+word leserei 123-123456-12456-146
+sufword lesereinbind 123-123456-12456-1246-12-35-145
+sufword leserempfehl 123-123456-12456-12356-1234-124-2356-123
+sufword lesererwart 123-123456-12456-12456-2456-356-2345
+word leserin 123-123456-12456-35
+sufword leserinnen 123-123456-12456-35-1356-14
+sufword leserinteress 123-123456-12456-2-35
+sufword leserorientier 123-123456-12456-26-24-14-2345-346-1235
+before e sufword leserumfra 123-123456-12456-136-134-124-1235-1
+before konsonant begword leser 123-123456-12456
+
+before hilmnrsu begword reise 1235-146-234-15
+word reisen 1235-146-234-14
+sufword reisend 1235-146-234-14-145
+word reisens 1235-146-234-14-234
+before t sufword reisern 1235-146-234-12456-1345
+word reises 1235-146-234-123456
+before cost sufword reis 1235-146-234
+
+always avantgarde 1-1236-235-2345-1245-356-145-15
+always firmware 124-24-1235-134-2456-356-15
+always hardcore 125-356-145-6-14-26-15
+always hardware 125-356-145-2456-356-15
+always lactose =
+always renaissance 1235-14-1-24-2346-235-6-14-15
+always software 234-135-124-2345-2456-356-15
+
+before cost always kreis 13-1235-146-234
+before cost always praxis =
+before cost always preis 1234-1235-146-234
+
+always reimplant 1235-15-24-134-1234-123-235-2345
+always reimplement 1235-15-24-134-1234-123-15-134-14-2345
+before t always reimpor 1235-15-24-134-1234-26
+always reindustrialis 1235-15-35-145-136-23456-1235-24-25-24-234
+always reinfizier 1235-15-35-124-24-1356-346-1235
+always reinitialis 1235-15-35-24-2345-24-25-24-234
+always reinkarn 1235-15-35-13-356-1345
+always reinstall 1235-15-35-23456-1-12345
+always reinszenier 1235-15-35-234-1356-14-346-1235
+always reintegr 1235-15-35-236-1245-1235
+always reinterpret 1235-15-35-2345-12456-1234-1235-15-2345
+always remineralis 1235-15-134-35-12456-25-24-234
+always reunion 1235-15-256-24-135-1345
+always reuelos 1235-126-15-123-135-234
+
+always abgeordneten 1-12-12346-26-145-1345-15-2345-14
+always abiturienten 1-12-24-2345-136-1235-24-14-2345-14
+always abonnenten 1-12-135-1345-1345-14-2345-14
+always adressaten 1-145-1235-15-2346-1-2345-14
+always studenten 23456-136-145-14-2345-14
diff --git a/Tables/Contraction/de.ctb b/Tables/Contraction/de.ctb
index 85ac5b5a5..2fa3258aa 100644
--- a/Tables/Contraction/de.ctb
+++ b/Tables/Contraction/de.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/en-ueb-g1.ctb b/Tables/Contraction/en-ueb-g1.ctb
index 251a66af3..7a1aae2a9 100644
--- a/Tables/Contraction/en-ueb-g1.ctb
+++ b/Tables/Contraction/en-ueb-g1.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/en-ueb-g2.ctb b/Tables/Contraction/en-ueb-g2.ctb
index 19836de70..85ad781d0 100644
--- a/Tables/Contraction/en-ueb-g2.ctb
+++ b/Tables/Contraction/en-ueb-g2.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/en-us-g2.ctb b/Tables/Contraction/en-us-g2.ctb
index 912b2cc80..fd713cbbc 100644
--- a/Tables/Contraction/en-us-g2.ctb
+++ b/Tables/Contraction/en-us-g2.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/en.ctb b/Tables/Contraction/en.ctb
index 08cce8bb6..b264fa336 100644
--- a/Tables/Contraction/en.ctb
+++ b/Tables/Contraction/en.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/en_US.ctb b/Tables/Contraction/en_US.ctb
index a2a330f4b..ec3d5f1fe 100644
--- a/Tables/Contraction/en_US.ctb
+++ b/Tables/Contraction/en_US.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/es.ctb b/Tables/Contraction/es.ctb
index 6121b93a7..b7398b8b6 100644
--- a/Tables/Contraction/es.ctb
+++ b/Tables/Contraction/es.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/fr-g1.ctb b/Tables/Contraction/fr-g1.ctb
index 22efe2244..b5382580b 100644
--- a/Tables/Contraction/fr-g1.ctb
+++ b/Tables/Contraction/fr-g1.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/fr-g2.ctb b/Tables/Contraction/fr-g2.ctb
index 81277af29..4e6ac4ee8 100644
--- a/Tables/Contraction/fr-g2.ctb
+++ b/Tables/Contraction/fr-g2.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/fr.ctb b/Tables/Contraction/fr.ctb
index f205963d6..0f51a5238 100644
--- a/Tables/Contraction/fr.ctb
+++ b/Tables/Contraction/fr.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/ha.ctb b/Tables/Contraction/ha.ctb
index 4bca3c434..b929ff2a7 100644
--- a/Tables/Contraction/ha.ctb
+++ b/Tables/Contraction/ha.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/id.ctb b/Tables/Contraction/id.ctb
index f5729ea9a..dfdc9ecf2 100644
--- a/Tables/Contraction/id.ctb
+++ b/Tables/Contraction/id.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/ipa.ctb b/Tables/Contraction/ipa.ctb
index 7d16283dd..99f03041c 100644
--- a/Tables/Contraction/ipa.ctb
+++ b/Tables/Contraction/ipa.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/ja.ctb b/Tables/Contraction/ja.ctb
index cda55e988..3c95b2f55 100644
--- a/Tables/Contraction/ja.ctb
+++ b/Tables/Contraction/ja.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/ko-g0.ctb b/Tables/Contraction/ko-g0.ctb
index bfeccd51b..428b76bca 100644
--- a/Tables/Contraction/ko-g0.ctb
+++ b/Tables/Contraction/ko-g0.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/ko-g1.ctb b/Tables/Contraction/ko-g1.ctb
index 24acc779f..a68d1d9c2 100644
--- a/Tables/Contraction/ko-g1.ctb
+++ b/Tables/Contraction/ko-g1.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/ko-g2.ctb b/Tables/Contraction/ko-g2.ctb
index 78b3dfd25..a4f41174c 100644
--- a/Tables/Contraction/ko-g2.ctb
+++ b/Tables/Contraction/ko-g2.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/ko.ctb b/Tables/Contraction/ko.ctb
index d0f99b7b0..31868085d 100644
--- a/Tables/Contraction/ko.ctb
+++ b/Tables/Contraction/ko.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/latex-access.ctb b/Tables/Contraction/latex-access.ctb
index 82ca4295a..97ad6c616 100755
--- a/Tables/Contraction/latex-access.ctb
+++ b/Tables/Contraction/latex-access.ctb
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/letters-latin.cti b/Tables/Contraction/letters-latin.cti
index c003c5342..22645bea8 100644
--- a/Tables/Contraction/letters-latin.cti
+++ b/Tables/Contraction/letters-latin.cti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/lt.ctb b/Tables/Contraction/lt.ctb
index 50972092a..77a1148c7 100644
--- a/Tables/Contraction/lt.ctb
+++ b/Tables/Contraction/lt.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/mg.ctb b/Tables/Contraction/mg.ctb
index ca22dfc7f..bca97c8f5 100644
--- a/Tables/Contraction/mg.ctb
+++ b/Tables/Contraction/mg.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/mun.ctb b/Tables/Contraction/mun.ctb
index 99681407f..4854c7643 100644
--- a/Tables/Contraction/mun.ctb
+++ b/Tables/Contraction/mun.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/nabcc.cti b/Tables/Contraction/nabcc.cti
index bd9508fc4..c3ccfa49c 100644
--- a/Tables/Contraction/nabcc.cti
+++ b/Tables/Contraction/nabcc.cti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/nl.ctb b/Tables/Contraction/nl.ctb
index 63380c649..67110eb91 100644
--- a/Tables/Contraction/nl.ctb
+++ b/Tables/Contraction/nl.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/none.ctb b/Tables/Contraction/none.ctb
index 037f0988f..70d83ef1e 100644
--- a/Tables/Contraction/none.ctb
+++ b/Tables/Contraction/none.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/ny.ctb b/Tables/Contraction/ny.ctb
index 36cae3fc4..ebff6b545 100644
--- a/Tables/Contraction/ny.ctb
+++ b/Tables/Contraction/ny.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/pt.ctb b/Tables/Contraction/pt.ctb
index 048327884..f3c9f2df8 100644
--- a/Tables/Contraction/pt.ctb
+++ b/Tables/Contraction/pt.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/ru.ctb b/Tables/Contraction/ru.ctb
index 95de1a6d7..469e3a018 100644
--- a/Tables/Contraction/ru.ctb
+++ b/Tables/Contraction/ru.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/si.ctb b/Tables/Contraction/si.ctb
index 2ce064323..9866a6960 100644
--- a/Tables/Contraction/si.ctb
+++ b/Tables/Contraction/si.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/spaces.cti b/Tables/Contraction/spaces.cti
index dc8772fef..0bdad157d 100644
--- a/Tables/Contraction/spaces.cti
+++ b/Tables/Contraction/spaces.cti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/sw.ctb b/Tables/Contraction/sw.ctb
index 893e526b1..a89c88625 100644
--- a/Tables/Contraction/sw.ctb
+++ b/Tables/Contraction/sw.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/th.ctb b/Tables/Contraction/th.ctb
index fa155ea07..146a22660 100644
--- a/Tables/Contraction/th.ctb
+++ b/Tables/Contraction/th.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/zh-tw.ctb b/Tables/Contraction/zh-tw.ctb
index 8f73dca5b..da7639ded 100644
--- a/Tables/Contraction/zh-tw.ctb
+++ b/Tables/Contraction/zh-tw.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/zh-tw.cti b/Tables/Contraction/zh-tw.cti
index 0e30c5d77..e04f8fbf9 100644
--- a/Tables/Contraction/zh-tw.cti
+++ b/Tables/Contraction/zh-tw.cti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/zh_TW.ctb b/Tables/Contraction/zh_TW.ctb
index da87bbe34..9071c8b57 100644
--- a/Tables/Contraction/zh_TW.ctb
+++ b/Tables/Contraction/zh_TW.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Contraction/zu.ctb b/Tables/Contraction/zu.ctb
index fb0c969a1..9d1de2446 100644
--- a/Tables/Contraction/zu.ctb
+++ b/Tables/Contraction/zu.ctb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/al/abt_basic.kti b/Tables/Input/al/abt_basic.kti
index d72c393a4..b4f756e2d 100644
--- a/Tables/Input/al/abt_basic.kti
+++ b/Tables/Input/al/abt_basic.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -55,7 +55,7 @@ bind Home+Cursor+!RoutingKey1 SETLEFT
 
 bind Prog+!RoutingKey1 CLIP_NEW
 bind Home+!RoutingKey1 COPY_RECT
-bind Prog+Home+!Down PASTE
+bind Prog+Home+Down PASTE:PASTE_ALTMODE
 
 bind Prog HELP
 bind Prog+Home DISPMD
diff --git a/Tables/Input/al/abt_extra.kti b/Tables/Input/al/abt_extra.kti
index a442d1fab..d5c46b206 100644
--- a/Tables/Input/al/abt_extra.kti
+++ b/Tables/Input/al/abt_extra.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/al/abt_large.ktb b/Tables/Input/al/abt_large.ktb
index db5db67bf..a344acf6a 100644
--- a/Tables/Input/al/abt_large.ktb
+++ b/Tables/Input/al/abt_large.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/al/abt_small.ktb b/Tables/Input/al/abt_small.ktb
index d6b5fedc4..2f8ae00f5 100644
--- a/Tables/Input/al/abt_small.ktb
+++ b/Tables/Input/al/abt_small.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/al/bc-etouch.kti b/Tables/Input/al/bc-etouch.kti
index 17b240d91..01a612a88 100644
--- a/Tables/Input/al/bc-etouch.kti
+++ b/Tables/Input/al/bc-etouch.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/al/bc-smartpad.kti b/Tables/Input/al/bc-smartpad.kti
index c5b8538ee..6c4908e0b 100644
--- a/Tables/Input/al/bc-smartpad.kti
+++ b/Tables/Input/al/bc-smartpad.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -33,7 +33,7 @@ bind SmartpadLeft KEY_CURSOR_LEFT
 bind SmartpadRight KEY_CURSOR_RIGHT
 bind SmartpadUp KEY_CURSOR_UP
 bind SmartpadDown KEY_CURSOR_DOWN
-bind SmartpadEnter PASTE
+bind SmartpadEnter PASTE:PASTE_ALTMODE
 
 bind SmartpadF2 TIME
 
diff --git a/Tables/Input/al/bc-thumb.kti b/Tables/Input/al/bc-thumb.kti
index 774c4dc16..f93fb47c8 100644
--- a/Tables/Input/al/bc-thumb.kti
+++ b/Tables/Input/al/bc-thumb.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/al/bc.kti b/Tables/Input/al/bc.kti
index 40a08165b..d41ead4b0 100644
--- a/Tables/Input/al/bc.kti
+++ b/Tables/Input/al/bc.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -65,7 +65,7 @@ bind ETouchLeftRear+RoutingKey1 CLIP_NEW
 bind ETouchLeftFront+RoutingKey1 CLIP_ADD
 bind ETouchRightRear+RoutingKey1 COPY_LINE
 bind ETouchRightFront+RoutingKey1 COPY_RECT
-bind ETouchRightRear+ETouchRightFront PASTE
+bind ETouchRightRear+ETouchRightFront PASTE:PASTE_ALTMODE
 
 bind ThumbLeft+RoutingKey1 PRINDENT
 bind ThumbRight+RoutingKey1 NXINDENT
diff --git a/Tables/Input/al/bc640.ktb b/Tables/Input/al/bc640.ktb
index 03b035b3e..760618991 100644
--- a/Tables/Input/al/bc640.ktb
+++ b/Tables/Input/al/bc640.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/al/bc680.ktb b/Tables/Input/al/bc680.ktb
index e271d1b16..9d4e96c48 100644
--- a/Tables/Input/al/bc680.ktb
+++ b/Tables/Input/al/bc680.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/al/el.ktb b/Tables/Input/al/el.ktb
index ba7869deb..8e8e2424e 100644
--- a/Tables/Input/al/el.ktb
+++ b/Tables/Input/al/el.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/al/sat_common.kti b/Tables/Input/al/sat_common.kti
index f264ebf4d..ab389d28a 100644
--- a/Tables/Input/al/sat_common.kti
+++ b/Tables/Input/al/sat_common.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/al/sat_large.ktb b/Tables/Input/al/sat_large.ktb
index 8f64e131e..7e1f56641 100644
--- a/Tables/Input/al/sat_large.ktb
+++ b/Tables/Input/al/sat_large.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/al/sat_nav.kti b/Tables/Input/al/sat_nav.kti
index ba2258c49..ea6250943 100644
--- a/Tables/Input/al/sat_nav.kti
+++ b/Tables/Input/al/sat_nav.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -37,7 +37,7 @@ bind NavPadLeft PREFMENU
 bind NavPadRight INFO
 bind NavPadF1+NavPadLeft FREEZE
 bind NavPadF1+NavPadRight SIXDOTS
-bind NavPadF2+NavPadLeft PASTE
+bind NavPadF2+NavPadLeft PASTE:PASTE_ALTMODE
 bind NavPadF2+NavPadRight CSRJMP_VERT
 
 bind NavPadUp PRPROMPT
diff --git a/Tables/Input/al/sat_small.ktb b/Tables/Input/al/sat_small.ktb
index bbf607325..91fd80a68 100644
--- a/Tables/Input/al/sat_small.ktb
+++ b/Tables/Input/al/sat_small.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/al/sat_speech.kti b/Tables/Input/al/sat_speech.kti
index 9fade0265..fc9e6fa2a 100644
--- a/Tables/Input/al/sat_speech.kti
+++ b/Tables/Input/al/sat_speech.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/al/sat_tumblers.kti b/Tables/Input/al/sat_tumblers.kti
index ea28f0df0..dae8104b6 100644
--- a/Tables/Input/al/sat_tumblers.kti
+++ b/Tables/Input/al/sat_tumblers.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/al/voyager.ktb b/Tables/Input/al/voyager.ktb
index 5b941d264..b64b165a7 100644
--- a/Tables/Input/al/voyager.ktb
+++ b/Tables/Input/al/voyager.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/android-chords.kti b/Tables/Input/android-chords.kti
index d6993f49a..2385db42e 100644
--- a/Tables/Input/android-chords.kti
+++ b/Tables/Input/android-chords.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/at/all.ktb b/Tables/Input/at/all.ktb
index 784e92097..ec8419d2e 100644
--- a/Tables/Input/at/all.ktb
+++ b/Tables/Input/at/all.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bg/all.ktb b/Tables/Input/bg/all.ktb
index a85ab296e..afdb5ff1a 100644
--- a/Tables/Input/bg/all.ktb
+++ b/Tables/Input/bg/all.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/NLS_Zoomax.ktb b/Tables/Input/bm/NLS_Zoomax.ktb
index 51bcbf1e0..6b908be5b 100644
--- a/Tables/Input/bm/NLS_Zoomax.ktb
+++ b/Tables/Input/bm/NLS_Zoomax.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -97,7 +97,7 @@ bind Select+S4 SIXDOTS
 bind BL+S3 DISPMD
 bind BL+S4 FREEZE
 
-bind Left+Right PASTE
+bind Left+Right PASTE:PASTE_ALTMODE
 bind S2+S3 CSRJMP_VERT
 
 include display6.kti
diff --git a/Tables/Input/bm/b2g.ktb b/Tables/Input/bm/b2g.ktb
index 954d23f60..7e5ef54c9 100644
--- a/Tables/Input/bm/b2g.ktb
+++ b/Tables/Input/bm/b2g.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -43,5 +43,5 @@ bind B11+Up TOP
 bind B11+Down BOT
 bind B11+Left FWINLTSKIP
 bind B11+Right FWINRTSKIP
-bind B11+Select PASTE
+bind B11+Select PASTE:PASTE_ALTMODE
 
diff --git a/Tables/Input/bm/b9b10.kti b/Tables/Input/bm/b9b10.kti
index 59e17136a..9a7af564e 100644
--- a/Tables/Input/bm/b9b10.kti
+++ b/Tables/Input/bm/b9b10.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/b9b11b10.kti b/Tables/Input/bm/b9b11b10.kti
index f3d31e80d..a7778de45 100644
--- a/Tables/Input/bm/b9b11b10.kti
+++ b/Tables/Input/bm/b9b11b10.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -34,5 +34,5 @@ bind B11+Up TOP
 bind B11+Down BOT
 bind B11+Left FWINLTSKIP
 bind B11+Right FWINRTSKIP
-bind B11+Press PASTE
+bind B11+Press PASTE:PASTE_ALTMODE
 
diff --git a/Tables/Input/bm/command.kti b/Tables/Input/bm/command.kti
index db866dc22..f44c5b4d9 100644
--- a/Tables/Input/bm/command.kti
+++ b/Tables/Input/bm/command.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/connect.ktb b/Tables/Input/bm/connect.ktb
index d00375d77..4ec56ee4d 100644
--- a/Tables/Input/bm/connect.ktb
+++ b/Tables/Input/bm/connect.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/conny.ktb b/Tables/Input/bm/conny.ktb
index a5cafb9ef..b29284ed1 100644
--- a/Tables/Input/bm/conny.ktb
+++ b/Tables/Input/bm/conny.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/d6.kti b/Tables/Input/bm/d6.kti
index a6e9ff9c9..4c6140136 100644
--- a/Tables/Input/bm/d6.kti
+++ b/Tables/Input/bm/d6.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -65,7 +65,7 @@ bind Display1+Display5 TIME
 bind Display1+Display2+Display4 FREEZE
 bind Display1+Display2+Display5 HELP
 bind Display1+Display3+Display4 PREFMENU
-bind Display1+Display2+Display3+Display4 PASTE
+bind Display1+Display2+Display3+Display4 PASTE:PASTE_ALTMODE
 bind Display1+Display2+Display3+Display5 PREFLOAD
 bind Display2+Display3+Display4 RESTARTSPEECH
 bind Display2+Display3+Display4+Display5 ATTRVIS
diff --git a/Tables/Input/bm/default.ktb b/Tables/Input/bm/default.ktb
index 9eac611f2..79dba8b79 100644
--- a/Tables/Input/bm/default.ktb
+++ b/Tables/Input/bm/default.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/display6.kti b/Tables/Input/bm/display6.kti
index 4d6429b80..2874f1b64 100644
--- a/Tables/Input/bm/display6.kti
+++ b/Tables/Input/bm/display6.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/display7.kti b/Tables/Input/bm/display7.kti
index db0e2dde3..1e97d4b6c 100644
--- a/Tables/Input/bm/display7.kti
+++ b/Tables/Input/bm/display7.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -62,5 +62,5 @@ bind Display3+Display6 PREFLOAD
 bind Display4+Display7 PREFSAVE
 
 bind Display5+Display3+Display6 CSRJMP_VERT
-bind Display5+Display4+Display7 PASTE
+bind Display5+Display4+Display7 PASTE:PASTE_ALTMODE
 
diff --git a/Tables/Input/bm/dm80p.ktb b/Tables/Input/bm/dm80p.ktb
index e9ba470c9..f1229f45b 100644
--- a/Tables/Input/bm/dm80p.ktb
+++ b/Tables/Input/bm/dm80p.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/emulate6.kti b/Tables/Input/bm/emulate6.kti
index c50bcb0d6..d4fc184ad 100644
--- a/Tables/Input/bm/emulate6.kti
+++ b/Tables/Input/bm/emulate6.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/front10.kti b/Tables/Input/bm/front10.kti
index b4f073fbb..b55ad3507 100644
--- a/Tables/Input/bm/front10.kti
+++ b/Tables/Input/bm/front10.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/front6.kti b/Tables/Input/bm/front6.kti
index 5fe20b810..9582c58f0 100644
--- a/Tables/Input/bm/front6.kti
+++ b/Tables/Input/bm/front6.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/horizontal.kti b/Tables/Input/bm/horizontal.kti
index 73723ed40..03ff590cc 100644
--- a/Tables/Input/bm/horizontal.kti
+++ b/Tables/Input/bm/horizontal.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/inka.ktb b/Tables/Input/bm/inka.ktb
index bc65e928f..5e4303924 100644
--- a/Tables/Input/bm/inka.ktb
+++ b/Tables/Input/bm/inka.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/joystick.kti b/Tables/Input/bm/joystick.kti
index be9afd378..bebe0746e 100644
--- a/Tables/Input/bm/joystick.kti
+++ b/Tables/Input/bm/joystick.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/keyboard.kti b/Tables/Input/bm/keyboard.kti
index bdb164e3c..45008919b 100644
--- a/Tables/Input/bm/keyboard.kti
+++ b/Tables/Input/bm/keyboard.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/navpad.kti b/Tables/Input/bm/navpad.kti
index 02ed28d81..d60cf7c42 100644
--- a/Tables/Input/bm/navpad.kti
+++ b/Tables/Input/bm/navpad.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/orbit.ktb b/Tables/Input/bm/orbit.ktb
index 048ff774c..134504c59 100644
--- a/Tables/Input/bm/orbit.ktb
+++ b/Tables/Input/bm/orbit.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/pro.ktb b/Tables/Input/bm/pro.ktb
index 933a53423..f0656113c 100644
--- a/Tables/Input/bm/pro.ktb
+++ b/Tables/Input/bm/pro.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/pronto.ktb b/Tables/Input/bm/pronto.ktb
index 54c82272e..2261bab3d 100644
--- a/Tables/Input/bm/pronto.ktb
+++ b/Tables/Input/bm/pronto.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/pv.ktb b/Tables/Input/bm/pv.ktb
index 5d133c043..038c8959d 100644
--- a/Tables/Input/bm/pv.ktb
+++ b/Tables/Input/bm/pv.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/rb.ktb b/Tables/Input/bm/rb.ktb
index 0784208cf..24667b9fc 100644
--- a/Tables/Input/bm/rb.ktb
+++ b/Tables/Input/bm/rb.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/routing.kti b/Tables/Input/bm/routing.kti
index c40ff35cb..0cbd6a715 100644
--- a/Tables/Input/bm/routing.kti
+++ b/Tables/Input/bm/routing.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/routing6.kti b/Tables/Input/bm/routing6.kti
index fe762c547..3f7dfc6ea 100644
--- a/Tables/Input/bm/routing6.kti
+++ b/Tables/Input/bm/routing6.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/routing7.kti b/Tables/Input/bm/routing7.kti
index 73273ae97..06472923e 100644
--- a/Tables/Input/bm/routing7.kti
+++ b/Tables/Input/bm/routing7.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/status.kti b/Tables/Input/bm/status.kti
index c453f54ba..b237f8f32 100644
--- a/Tables/Input/bm/status.kti
+++ b/Tables/Input/bm/status.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/sv.ktb b/Tables/Input/bm/sv.ktb
index 5cf5d506e..6108bfeed 100644
--- a/Tables/Input/bm/sv.ktb
+++ b/Tables/Input/bm/sv.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/ultra.ktb b/Tables/Input/bm/ultra.ktb
index 6a4273c50..6f2694469 100644
--- a/Tables/Input/bm/ultra.ktb
+++ b/Tables/Input/bm/ultra.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/v40.ktb b/Tables/Input/bm/v40.ktb
index 8f880862d..00ba0f496 100644
--- a/Tables/Input/bm/v40.ktb
+++ b/Tables/Input/bm/v40.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/v80.ktb b/Tables/Input/bm/v80.ktb
index 8e93cf340..69aeaa0ee 100644
--- a/Tables/Input/bm/v80.ktb
+++ b/Tables/Input/bm/v80.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/vertical.kti b/Tables/Input/bm/vertical.kti
index 07d776b9f..891b4eeb6 100644
--- a/Tables/Input/bm/vertical.kti
+++ b/Tables/Input/bm/vertical.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/vk.ktb b/Tables/Input/bm/vk.ktb
index 923d1bbc4..791aa2c44 100644
--- a/Tables/Input/bm/vk.ktb
+++ b/Tables/Input/bm/vk.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bm/wheels.kti b/Tables/Input/bm/wheels.kti
index db4e88aea..036267c8c 100644
--- a/Tables/Input/bm/wheels.kti
+++ b/Tables/Input/bm/wheels.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bn/all.ktb b/Tables/Input/bn/all.ktb
index 8c62a7ae2..422ccba8e 100644
--- a/Tables/Input/bn/all.ktb
+++ b/Tables/Input/bn/all.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bn/input.kti b/Tables/Input/bn/input.kti
index 3445599c9..cc7597ca5 100644
--- a/Tables/Input/bn/input.kti
+++ b/Tables/Input/bn/input.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/bp/all.kti b/Tables/Input/bp/all.kti
index 7b1495b4c..546363e1b 100644
--- a/Tables/Input/bp/all.kti
+++ b/Tables/Input/bp/all.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/cb/all.ktb b/Tables/Input/cb/all.ktb
index 84f123bfd..5a8911603 100644
--- a/Tables/Input/cb/all.ktb
+++ b/Tables/Input/cb/all.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ce/all.ktb b/Tables/Input/ce/all.ktb
index 1fff0fb78..8b5556258 100644
--- a/Tables/Input/ce/all.ktb
+++ b/Tables/Input/ce/all.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ce/novem.ktb b/Tables/Input/ce/novem.ktb
index b7f6f6b45..d35eefd0f 100644
--- a/Tables/Input/ce/novem.ktb
+++ b/Tables/Input/ce/novem.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/chords.kti b/Tables/Input/chords.kti
index 81852cd4b..25309f0cb 100644
--- a/Tables/Input/chords.kti
+++ b/Tables/Input/chords.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -121,7 +121,7 @@ assign toggleCommand SLIDEWIN
 include toggle.kti
 endVariables
 
-bind \{chord}\{x} PASTE
+bind \{chord}\{x} PASTE:PASTE_ALTMODE
 bind \{chord}\{x}+\{toggleOff} CLIP_RESTORE
 bind \{chord}\{x}+\{toggleOn} CLIP_SAVE
 
diff --git a/Tables/Input/cn/all.ktb b/Tables/Input/cn/all.ktb
index 6a449d8c0..98bf01ef5 100644
--- a/Tables/Input/cn/all.ktb
+++ b/Tables/Input/cn/all.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/dp/all.ktb b/Tables/Input/dp/all.ktb
index b66cb34e0..cd13e1bda 100644
--- a/Tables/Input/dp/all.ktb
+++ b/Tables/Input/dp/all.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/dp/function.kti b/Tables/Input/dp/function.kti
index 047d63db9..d09f439a8 100644
--- a/Tables/Input/dp/function.kti
+++ b/Tables/Input/dp/function.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/dp/keyboard.kti b/Tables/Input/dp/keyboard.kti
index 037345ada..45bdfb72c 100644
--- a/Tables/Input/dp/keyboard.kti
+++ b/Tables/Input/dp/keyboard.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/dp/navigation.kti b/Tables/Input/dp/navigation.kti
index 528594133..231b8da05 100644
--- a/Tables/Input/dp/navigation.kti
+++ b/Tables/Input/dp/navigation.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/dp/panfn4.ktb b/Tables/Input/dp/panfn4.ktb
index 8ef758ba5..66b51b160 100644
--- a/Tables/Input/dp/panfn4.ktb
+++ b/Tables/Input/dp/panfn4.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/dp/panning.kti b/Tables/Input/dp/panning.kti
index 8693ebb17..e21633298 100644
--- a/Tables/Input/dp/panning.kti
+++ b/Tables/Input/dp/panning.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/dp/routing.kti b/Tables/Input/dp/routing.kti
index 063f23e33..54e4ab78b 100644
--- a/Tables/Input/dp/routing.kti
+++ b/Tables/Input/dp/routing.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/dp/scroll.kti b/Tables/Input/dp/scroll.kti
index a49dc4587..16e9a75a7 100644
--- a/Tables/Input/dp/scroll.kti
+++ b/Tables/Input/dp/scroll.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/eu/braille.kti b/Tables/Input/eu/braille.kti
index 79b2d69a8..35f92ecf5 100644
--- a/Tables/Input/eu/braille.kti
+++ b/Tables/Input/eu/braille.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/eu/clio.ktb b/Tables/Input/eu/clio.ktb
index b6c051db4..eed7ca14c 100644
--- a/Tables/Input/eu/clio.ktb
+++ b/Tables/Input/eu/clio.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/eu/common.kti b/Tables/Input/eu/common.kti
index 70b2f0b90..da5b7532e 100644
--- a/Tables/Input/eu/common.kti
+++ b/Tables/Input/eu/common.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/eu/esys_large.ktb b/Tables/Input/eu/esys_large.ktb
index 8e90f861a..0b9240825 100644
--- a/Tables/Input/eu/esys_large.ktb
+++ b/Tables/Input/eu/esys_large.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/eu/esys_medium.ktb b/Tables/Input/eu/esys_medium.ktb
index 88195faaf..da71d1e33 100644
--- a/Tables/Input/eu/esys_medium.ktb
+++ b/Tables/Input/eu/esys_medium.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/eu/esys_small.ktb b/Tables/Input/eu/esys_small.ktb
index e240096de..6e14afcaa 100644
--- a/Tables/Input/eu/esys_small.ktb
+++ b/Tables/Input/eu/esys_small.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/eu/esytime.ktb b/Tables/Input/eu/esytime.ktb
index 89e63eb11..afb0e40fe 100644
--- a/Tables/Input/eu/esytime.ktb
+++ b/Tables/Input/eu/esytime.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/eu/iris.ktb b/Tables/Input/eu/iris.ktb
index 5115692d3..62ea8b5a3 100644
--- a/Tables/Input/eu/iris.ktb
+++ b/Tables/Input/eu/iris.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/eu/joysticks.kti b/Tables/Input/eu/joysticks.kti
index c23133950..42798262d 100644
--- a/Tables/Input/eu/joysticks.kti
+++ b/Tables/Input/eu/joysticks.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/eu/routing.kti b/Tables/Input/eu/routing.kti
index 48e4b5ba4..377266a34 100644
--- a/Tables/Input/eu/routing.kti
+++ b/Tables/Input/eu/routing.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/eu/sw12.kti b/Tables/Input/eu/sw12.kti
index e7e4e10ae..8b4831fae 100644
--- a/Tables/Input/eu/sw12.kti
+++ b/Tables/Input/eu/sw12.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/eu/sw34.kti b/Tables/Input/eu/sw34.kti
index cdf59066c..776dc902e 100644
--- a/Tables/Input/eu/sw34.kti
+++ b/Tables/Input/eu/sw34.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/eu/sw56.kti b/Tables/Input/eu/sw56.kti
index 27ad47038..0ff0753cf 100644
--- a/Tables/Input/eu/sw56.kti
+++ b/Tables/Input/eu/sw56.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/fa/all.ktb b/Tables/Input/fa/all.ktb
index 61ccc977b..aa64af9d6 100644
--- a/Tables/Input/fa/all.ktb
+++ b/Tables/Input/fa/all.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -82,7 +82,7 @@ bind K8+K7 TOP
 bind K8+K9 BOT
 
 bind K8 SAY_LINE:MUTE
-bind K7+K8+K9 PASTE
+bind K7+K8+K9 PASTE:PASTE_ALTMODE
 
 bind K1+K7 PRPROMPT
 bind K1+K9 NXPROMPT
diff --git a/Tables/Input/fs/bumpers.kti b/Tables/Input/fs/bumpers.kti
index 6f6ca9ee6..d5f78c32e 100644
--- a/Tables/Input/fs/bumpers.kti
+++ b/Tables/Input/fs/bumpers.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/fs/common.kti b/Tables/Input/fs/common.kti
index c2e1602ab..7ef6db4a3 100644
--- a/Tables/Input/fs/common.kti
+++ b/Tables/Input/fs/common.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -21,7 +21,7 @@ bind Right\{navKeyType}Press LNEND
 
 bind LeftSelector BACK:TOP_LEFT
 bind RightSelector HOME:BOT_LEFT
-bind LeftSelector+RightSelector PASTE
+bind LeftSelector+RightSelector PASTE:PASTE_ALTMODE
 
 bind PanLeft FWINLT
 bind PanRight FWINRT
diff --git a/Tables/Input/fs/focus.kti b/Tables/Input/fs/focus.kti
index 5774448c7..33229d859 100644
--- a/Tables/Input/fs/focus.kti
+++ b/Tables/Input/fs/focus.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/fs/focus1.ktb b/Tables/Input/fs/focus1.ktb
index a0f55900e..a8aca36fe 100644
--- a/Tables/Input/fs/focus1.ktb
+++ b/Tables/Input/fs/focus1.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/fs/focus14.ktb b/Tables/Input/fs/focus14.ktb
index 30a31c189..6ae883eb2 100644
--- a/Tables/Input/fs/focus14.ktb
+++ b/Tables/Input/fs/focus14.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/fs/focus40.ktb b/Tables/Input/fs/focus40.ktb
index 702834d22..6e89cba42 100644
--- a/Tables/Input/fs/focus40.ktb
+++ b/Tables/Input/fs/focus40.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/fs/focus80.ktb b/Tables/Input/fs/focus80.ktb
index c635fecb8..4d66f1913 100644
--- a/Tables/Input/fs/focus80.ktb
+++ b/Tables/Input/fs/focus80.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/fs/keyboard.kti b/Tables/Input/fs/keyboard.kti
index 093e36c83..9606f73f4 100644
--- a/Tables/Input/fs/keyboard.kti
+++ b/Tables/Input/fs/keyboard.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/fs/pacmate.ktb b/Tables/Input/fs/pacmate.ktb
index 15708a625..2901f3c84 100644
--- a/Tables/Input/fs/pacmate.ktb
+++ b/Tables/Input/fs/pacmate.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/fs/rockers.kti b/Tables/Input/fs/rockers.kti
index 3a11b7cfd..2a54a8b92 100644
--- a/Tables/Input/fs/rockers.kti
+++ b/Tables/Input/fs/rockers.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/fs/speech.kti b/Tables/Input/fs/speech.kti
index e23c3cf95..20307267a 100644
--- a/Tables/Input/fs/speech.kti
+++ b/Tables/Input/fs/speech.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hd/mbl.ktb b/Tables/Input/hd/mbl.ktb
index f8c1d91e2..9476791ff 100644
--- a/Tables/Input/hd/mbl.ktb
+++ b/Tables/Input/hd/mbl.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -64,7 +64,7 @@ bind B2+K3 FWINRTSKIP
 bind B3+K1 LNBEG
 bind B3+K3 LNEND
 
-bind B4+K1 PASTE
+bind B4+K1 PASTE:PASTE_ALTMODE
 bind B4+K3 CSRJMP_VERT
 
 bind B5+K1 TIME
diff --git a/Tables/Input/hd/pfl.ktb b/Tables/Input/hd/pfl.ktb
index 0681c603a..1797927f9 100644
--- a/Tables/Input/hd/pfl.ktb
+++ b/Tables/Input/hd/pfl.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -67,7 +67,7 @@ bind B3+K3 FWINRTSKIP
 bind B7+K1 LNBEG
 bind B7+K3 LNEND
 
-bind B5+K1 PASTE
+bind B5+K1 PASTE:PASTE_ALTMODE
 bind B5+K3 CSRJMP_VERT
 
 bind B6+K1 TIME
diff --git a/Tables/Input/hm/beetle.ktb b/Tables/Input/hm/beetle.ktb
index e2cbbc177..e2af721c7 100644
--- a/Tables/Input/hm/beetle.ktb
+++ b/Tables/Input/hm/beetle.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/braille.kti b/Tables/Input/hm/braille.kti
index 1aa087b4b..b905788d3 100644
--- a/Tables/Input/hm/braille.kti
+++ b/Tables/Input/hm/braille.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/common.kti b/Tables/Input/hm/common.kti
index d5a2618f7..1c11a9c59 100644
--- a/Tables/Input/hm/common.kti
+++ b/Tables/Input/hm/common.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/contexts.kti b/Tables/Input/hm/contexts.kti
index a506d5c4b..1df4b257f 100644
--- a/Tables/Input/hm/contexts.kti
+++ b/Tables/Input/hm/contexts.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/edge.ktb b/Tables/Input/hm/edge.ktb
index 389eae7c2..969c11990 100644
--- a/Tables/Input/hm/edge.ktb
+++ b/Tables/Input/hm/edge.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/emotion.ktb b/Tables/Input/hm/emotion.ktb
index 092e252e6..0b7467307 100644
--- a/Tables/Input/hm/emotion.ktb
+++ b/Tables/Input/hm/emotion.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/f14.kti b/Tables/Input/hm/f14.kti
index 3ecb08d1c..dbaef174d 100644
--- a/Tables/Input/hm/f14.kti
+++ b/Tables/Input/hm/f14.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/f18.kti b/Tables/Input/hm/f18.kti
index 936d46fc0..74176c0d5 100644
--- a/Tables/Input/hm/f18.kti
+++ b/Tables/Input/hm/f18.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/fnkey.kti b/Tables/Input/hm/fnkey.kti
index 5963db436..93cd47cde 100644
--- a/Tables/Input/hm/fnkey.kti
+++ b/Tables/Input/hm/fnkey.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/left.kti b/Tables/Input/hm/left.kti
index 3001e2a2d..4eeb59c87 100644
--- a/Tables/Input/hm/left.kti
+++ b/Tables/Input/hm/left.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/letters.kti b/Tables/Input/hm/letters.kti
index a112708ba..27c8bb1b9 100644
--- a/Tables/Input/hm/letters.kti
+++ b/Tables/Input/hm/letters.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/pan.ktb b/Tables/Input/hm/pan.ktb
index 8a97a574e..7755b5549 100644
--- a/Tables/Input/hm/pan.ktb
+++ b/Tables/Input/hm/pan.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/pan.kti b/Tables/Input/hm/pan.kti
index a33274bda..a76fae8ea 100644
--- a/Tables/Input/hm/pan.kti
+++ b/Tables/Input/hm/pan.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/qwerty.ktb b/Tables/Input/hm/qwerty.ktb
index 2c53eca9a..f10843a38 100644
--- a/Tables/Input/hm/qwerty.ktb
+++ b/Tables/Input/hm/qwerty.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/qwerty.kti b/Tables/Input/hm/qwerty.kti
index e12f3c78a..6350c3178 100644
--- a/Tables/Input/hm/qwerty.kti
+++ b/Tables/Input/hm/qwerty.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/right.kti b/Tables/Input/hm/right.kti
index 5d3c03428..e631da7dc 100644
--- a/Tables/Input/hm/right.kti
+++ b/Tables/Input/hm/right.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/scroll.ktb b/Tables/Input/hm/scroll.ktb
index ea2bb3e1e..a2461c04d 100644
--- a/Tables/Input/hm/scroll.ktb
+++ b/Tables/Input/hm/scroll.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/scroll.kti b/Tables/Input/hm/scroll.kti
index e6f1111ab..fc8e7f4c1 100644
--- a/Tables/Input/hm/scroll.kti
+++ b/Tables/Input/hm/scroll.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hm/sync.ktb b/Tables/Input/hm/sync.ktb
index 9ea9b6817..b8c9aa3fd 100644
--- a/Tables/Input/hm/sync.ktb
+++ b/Tables/Input/hm/sync.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/ab.ktb b/Tables/Input/ht/ab.ktb
index 46d9a729a..22b1f5fc7 100644
--- a/Tables/Input/ht/ab.ktb
+++ b/Tables/Input/ht/ab.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/ab.kti b/Tables/Input/ht/ab.kti
index 92022d78d..f1c0c8767 100644
--- a/Tables/Input/ht/ab.kti
+++ b/Tables/Input/ht/ab.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/ab_s.ktb b/Tables/Input/ht/ab_s.ktb
index f2f1402d8..eb1a5aaa7 100644
--- a/Tables/Input/ht/ab_s.ktb
+++ b/Tables/Input/ht/ab_s.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/ac4.ktb b/Tables/Input/ht/ac4.ktb
index a19cac92f..efbd03720 100644
--- a/Tables/Input/ht/ac4.ktb
+++ b/Tables/Input/ht/ac4.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -27,7 +27,7 @@ bind SpaceRight+RoutingKey NXINDENT
 
 bind SpaceLeft FWINLT
 bind SpaceRight FWINRT
-bind SpaceLeft+SpaceRight PASTE
+bind SpaceLeft+SpaceRight PASTE:PASTE_ALTMODE
 
 bind B1+SpaceLeft LNBEG
 bind B1+SpaceRight LNEND
diff --git a/Tables/Input/ht/acp.ktb b/Tables/Input/ht/acp.ktb
new file mode 100644
index 000000000..3604772e3
--- /dev/null
+++ b/Tables/Input/ht/acp.ktb
@@ -0,0 +1,63 @@
+###############################################################################
+# BRLTTY - A background process providing access to the console screen (when in
+#          text mode) for a blind person using a refreshable braille display.
+#
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
+#
+# BRLTTY comes with ABSOLUTELY NO WARRANTY.
+#
+# This is free software, placed under the terms of the
+# GNU Lesser General Public License, as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any
+# later version. Please see the file LICENSE-LGPL for details.
+#
+# Web Page: http://brltty.app/
+#
+# This software is maintained by Dave Mielke <dave@mielke.cc>.
+###############################################################################
+
+title HandyTech Activator Pro
+
+bind B1+B4+SpaceLeft TOUCH_NAV
+
+bind SpaceLeft+RoutingKey PRINDENT
+bind SpaceRight+RoutingKey NXINDENT
+
+bind SpaceLeft FWINLT
+bind SpaceRight FWINRT
+bind SpaceLeft+SpaceRight PASTE:PASTE_ALTMODE
+
+bind B1+SpaceLeft LNBEG
+bind B1+SpaceRight LNEND
+bind B2+SpaceLeft TOP
+bind B2+SpaceRight BOT
+bind B3+SpaceLeft HWINLT
+bind B3+SpaceRight HWINRT
+bind B6+SpaceLeft CHRLT
+bind B6+SpaceRight CHRRT
+bind B2+B3+SpaceLeft MUTE
+bind B2+B3+SpaceRight SAY_LINE
+
+include dots.kti
+
+context braille Braille Input Mode
+map B4 DOT1
+map B3 DOT2
+map B2 DOT3
+map B5 DOT4
+map B6 DOT5
+map B7 DOT6
+map B1 DOT7
+map B8 DOT8
+bind SpaceLeft PASSDOTS
+bind SpaceRight KEY_ENTER
+bind SpaceLeft+B1 KEY_BACKSPACE
+map SpaceLeft CONTROL
+map SpaceRight META
+bind B1+B8+SpaceLeft CONTEXT+default
+
+context default
+bind B1+B8+SpaceLeft CONTEXT+braille
+
+include ../bm/display6.kti
+include ../bm/routing6.kti
diff --git a/Tables/Input/ht/alo.ktb b/Tables/Input/ht/alo.ktb
index 299506421..37b703220 100644
--- a/Tables/Input/ht/alo.ktb
+++ b/Tables/Input/ht/alo.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/as40.ktb b/Tables/Input/ht/as40.ktb
index df955a5ed..9cbdb9cd1 100644
--- a/Tables/Input/ht/as40.ktb
+++ b/Tables/Input/ht/as40.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/bb.ktb b/Tables/Input/ht/bb.ktb
index 4ca94c1ef..dfafc2ff6 100644
--- a/Tables/Input/ht/bb.ktb
+++ b/Tables/Input/ht/bb.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/bbp.ktb b/Tables/Input/ht/bbp.ktb
index 9e0157deb..c607f914c 100644
--- a/Tables/Input/ht/bbp.ktb
+++ b/Tables/Input/ht/bbp.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/bkwm.ktb b/Tables/Input/ht/bkwm.ktb
index d09b1dfa7..653dca1f5 100644
--- a/Tables/Input/ht/bkwm.ktb
+++ b/Tables/Input/ht/bkwm.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/brln.ktb b/Tables/Input/ht/brln.ktb
index 687e6b1aa..07ad05379 100644
--- a/Tables/Input/ht/brln.ktb
+++ b/Tables/Input/ht/brln.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/bs.kti b/Tables/Input/ht/bs.kti
index 86788d677..01dad796e 100644
--- a/Tables/Input/ht/bs.kti
+++ b/Tables/Input/ht/bs.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -26,7 +26,7 @@ bind SpaceRight+RoutingKey NXINDENT
 
 bind SpaceLeft FWINLT
 bind SpaceRight FWINRT
-bind SpaceLeft+SpaceRight PASTE
+bind SpaceLeft+SpaceRight PASTE:PASTE_ALTMODE
 
 bind B1+SpaceLeft LNBEG
 bind B1+SpaceRight LNEND
diff --git a/Tables/Input/ht/bs40.ktb b/Tables/Input/ht/bs40.ktb
index 8c8890257..a93345237 100644
--- a/Tables/Input/ht/bs40.ktb
+++ b/Tables/Input/ht/bs40.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/bs80.ktb b/Tables/Input/ht/bs80.ktb
index a51c76116..98183742d 100644
--- a/Tables/Input/ht/bs80.ktb
+++ b/Tables/Input/ht/bs80.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/cb40.ktb b/Tables/Input/ht/cb40.ktb
index 15cce07bc..5e3a617a0 100644
--- a/Tables/Input/ht/cb40.ktb
+++ b/Tables/Input/ht/cb40.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/dots.kti b/Tables/Input/ht/dots.kti
index 941c1583f..62a2bc59b 100644
--- a/Tables/Input/ht/dots.kti
+++ b/Tables/Input/ht/dots.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/easy.ktb b/Tables/Input/ht/easy.ktb
index b34dc6499..9baa55959 100644
--- a/Tables/Input/ht/easy.ktb
+++ b/Tables/Input/ht/easy.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -27,7 +27,7 @@ bind RoutingKey+!RoutingKey CLIP_COPY
 bind Left+RoutingKey PRINDENT
 bind Right+RoutingKey NXINDENT
 
-bind Left+Right PASTE
+bind Left+Right PASTE:PASTE_ALTMODE
 
 bind B1+Left LNBEG
 bind B1+Right LNEND
diff --git a/Tables/Input/ht/input.kti b/Tables/Input/ht/input.kti
index 18c60eeea..5466850d6 100644
--- a/Tables/Input/ht/input.kti
+++ b/Tables/Input/ht/input.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/joystick.kti b/Tables/Input/ht/joystick.kti
index f24f5d4d1..7771bb433 100644
--- a/Tables/Input/ht/joystick.kti
+++ b/Tables/Input/ht/joystick.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/keypad.kti b/Tables/Input/ht/keypad.kti
index e78103711..1beff1835 100644
--- a/Tables/Input/ht/keypad.kti
+++ b/Tables/Input/ht/keypad.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/mc88.ktb b/Tables/Input/ht/mc88.ktb
index 1ef4ba204..b1809ee9a 100644
--- a/Tables/Input/ht/mc88.ktb
+++ b/Tables/Input/ht/mc88.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/mdlr.ktb b/Tables/Input/ht/mdlr.ktb
index 319720961..90b3f76aa 100644
--- a/Tables/Input/ht/mdlr.ktb
+++ b/Tables/Input/ht/mdlr.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -26,7 +26,7 @@ bind Right+RoutingKey NXINDENT
 
 bind Left FWINLT
 bind Right FWINRT
-bind Left+Right PASTE
+bind Left+Right PASTE:PASTE_ALTMODE
 
 bind B1+Left LNBEG
 bind B1+Right LNEND
diff --git a/Tables/Input/ht/me.kti b/Tables/Input/ht/me.kti
index 8adf3744a..351410ef8 100644
--- a/Tables/Input/ht/me.kti
+++ b/Tables/Input/ht/me.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -28,7 +28,7 @@ bind RoutingKey+!RoutingKey CLIP_COPY
 bind Left+RoutingKey PRINDENT
 bind Right+RoutingKey NXINDENT
 
-bind Left+Right PASTE
+bind Left+Right PASTE:PASTE_ALTMODE
 
 bind B1+Left LNBEG
 bind B1+Right LNEND
diff --git a/Tables/Input/ht/me64.ktb b/Tables/Input/ht/me64.ktb
index f423e5e0e..6a3123307 100644
--- a/Tables/Input/ht/me64.ktb
+++ b/Tables/Input/ht/me64.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/me88.ktb b/Tables/Input/ht/me88.ktb
index fb33fd868..4bab6aa4b 100644
--- a/Tables/Input/ht/me88.ktb
+++ b/Tables/Input/ht/me88.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/rockers.kti b/Tables/Input/ht/rockers.kti
index f8bb2aaf7..3c6cbd445 100644
--- a/Tables/Input/ht/rockers.kti
+++ b/Tables/Input/ht/rockers.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ht/wave.ktb b/Tables/Input/ht/wave.ktb
index a9a06608e..0ac310b78 100644
--- a/Tables/Input/ht/wave.ktb
+++ b/Tables/Input/ht/wave.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -27,7 +27,7 @@ bind RoutingKey+!RoutingKey CLIP_COPY
 bind Left+RoutingKey PRINDENT
 bind Right+RoutingKey NXINDENT
 
-bind Left+Right PASTE
+bind Left+Right PASTE:PASTE_ALTMODE
 
 include dots.kti
 
diff --git a/Tables/Input/hw/B80.ktb b/Tables/Input/hw/B80.ktb
index fec3f0382..377cd8f81 100644
--- a/Tables/Input/hw/B80.ktb
+++ b/Tables/Input/hw/B80.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/BI14.ktb b/Tables/Input/hw/BI14.ktb
index 9f61c0e6b..2eb826a46 100644
--- a/Tables/Input/hw/BI14.ktb
+++ b/Tables/Input/hw/BI14.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/BI20X.ktb b/Tables/Input/hw/BI20X.ktb
index 2123a4a19..870b643e9 100644
--- a/Tables/Input/hw/BI20X.ktb
+++ b/Tables/Input/hw/BI20X.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/BI32.ktb b/Tables/Input/hw/BI32.ktb
index e99eb6d77..c2e32f7a8 100644
--- a/Tables/Input/hw/BI32.ktb
+++ b/Tables/Input/hw/BI32.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/BI40.ktb b/Tables/Input/hw/BI40.ktb
index c779547e1..bfd70f96a 100644
--- a/Tables/Input/hw/BI40.ktb
+++ b/Tables/Input/hw/BI40.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/BI40X.ktb b/Tables/Input/hw/BI40X.ktb
index 2146555c1..3747c0689 100644
--- a/Tables/Input/hw/BI40X.ktb
+++ b/Tables/Input/hw/BI40X.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/C20.ktb b/Tables/Input/hw/C20.ktb
index 009fe623a..b5e312979 100644
--- a/Tables/Input/hw/C20.ktb
+++ b/Tables/Input/hw/C20.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/M40.ktb b/Tables/Input/hw/M40.ktb
index 672c93f33..01a8dca09 100644
--- a/Tables/Input/hw/M40.ktb
+++ b/Tables/Input/hw/M40.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/NLS.ktb b/Tables/Input/hw/NLS.ktb
index 3ed4efaff..8d32560d4 100644
--- a/Tables/Input/hw/NLS.ktb
+++ b/Tables/Input/hw/NLS.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/braille.kti b/Tables/Input/hw/braille.kti
index a53dce16a..cb9ecc904 100644
--- a/Tables/Input/hw/braille.kti
+++ b/Tables/Input/hw/braille.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/command.kti b/Tables/Input/hw/command.kti
index 506d93e86..67b7e9be0 100644
--- a/Tables/Input/hw/command.kti
+++ b/Tables/Input/hw/command.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/joystick.kti b/Tables/Input/hw/joystick.kti
index 734fb50be..8c8fa2d61 100644
--- a/Tables/Input/hw/joystick.kti
+++ b/Tables/Input/hw/joystick.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/one.ktb b/Tables/Input/hw/one.ktb
index a1ed598f7..032fafe68 100644
--- a/Tables/Input/hw/one.ktb
+++ b/Tables/Input/hw/one.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/routing.kti b/Tables/Input/hw/routing.kti
index c40ff35cb..0cbd6a715 100644
--- a/Tables/Input/hw/routing.kti
+++ b/Tables/Input/hw/routing.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/thumb.kti b/Tables/Input/hw/thumb.kti
index b014b41d0..b5b54e5ac 100644
--- a/Tables/Input/hw/thumb.kti
+++ b/Tables/Input/hw/thumb.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -45,7 +45,7 @@ bind ThumbPrevious+RoutingKey CLIP_NEW
 bind ThumbLeft+RoutingKey CLIP_ADD
 bind \{right}+RoutingKey COPY_LINE
 bind \{next}+RoutingKey COPY_RECT
-bind ThumbPrevious+ThumbNext PASTE
+bind ThumbPrevious+ThumbNext PASTE:PASTE_ALTMODE
 
 
 #################
diff --git a/Tables/Input/hw/thumb_legacy.kti b/Tables/Input/hw/thumb_legacy.kti
index 5ce49dbc3..c79980f82 100644
--- a/Tables/Input/hw/thumb_legacy.kti
+++ b/Tables/Input/hw/thumb_legacy.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/hw/touch.ktb b/Tables/Input/hw/touch.ktb
index 9043b2168..641b85d05 100644
--- a/Tables/Input/hw/touch.ktb
+++ b/Tables/Input/hw/touch.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ic/bb.ktb b/Tables/Input/ic/bb.ktb
index b67dc375b..6d4ac15ae 100644
--- a/Tables/Input/ic/bb.ktb
+++ b/Tables/Input/ic/bb.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ic/chords.kti b/Tables/Input/ic/chords.kti
index c11d043ce..0baf6d7da 100644
--- a/Tables/Input/ic/chords.kti
+++ b/Tables/Input/ic/chords.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ic/common.kti b/Tables/Input/ic/common.kti
index 3e116b67f..b16c5cade 100644
--- a/Tables/Input/ic/common.kti
+++ b/Tables/Input/ic/common.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ic/nvda.ktb b/Tables/Input/ic/nvda.ktb
index 5e3180cd2..5fe221a53 100644
--- a/Tables/Input/ic/nvda.ktb
+++ b/Tables/Input/ic/nvda.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ic/route.kti b/Tables/Input/ic/route.kti
index 0a336a958..18dc60dbf 100644
--- a/Tables/Input/ic/route.kti
+++ b/Tables/Input/ic/route.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ic/toggle.kti b/Tables/Input/ic/toggle.kti
index 342fd3869..418c896d1 100644
--- a/Tables/Input/ic/toggle.kti
+++ b/Tables/Input/ic/toggle.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ir/all.kti b/Tables/Input/ir/all.kti
index 27249905c..6df4285c8 100644
--- a/Tables/Input/ir/all.kti
+++ b/Tables/Input/ir/all.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ir/brl.ktb b/Tables/Input/ir/brl.ktb
index 9430bf151..fb2d273ee 100644
--- a/Tables/Input/ir/brl.ktb
+++ b/Tables/Input/ir/brl.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ir/pc.ktb b/Tables/Input/ir/pc.ktb
index 6ea4bda2c..42f6e0646 100644
--- a/Tables/Input/ir/pc.ktb
+++ b/Tables/Input/ir/pc.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/lt/all.txt b/Tables/Input/lt/all.txt
index 6698cdaef..d5a9a6b8c 100644
--- a/Tables/Input/lt/all.txt
+++ b/Tables/Input/lt/all.txt
@@ -1,14 +1,14 @@
 Help: LogText (Danish)
 
 Specielle kommandoer til brltty startes med dot 37,
-efterfulgt af nedenstende koder.
+efterfulgt af nedenstående koder.
 Fx. 37 12357 for genstart af brltty.
 
-124: f Frys skrm
-1247: F Opt skrm
+124: f Frys skærm
+1247: F Optø skærm
 
 368: - Forrige virtuelle konsol
-2358: + Nste virtuelle konsol
+2358: + Næste virtuelle konsol
 18: 1 1. virtuelle konsol
 128: 2 2. virtuelle konsol
 148: 3 3. virtuelle konsol
@@ -19,15 +19,15 @@ Fx. 37 12357 for genstart af brltty.
 Download data fra computer til LogText:
 1: Tast dot 37 og derefter et stort D (dot 1457)
 2: Skriv stien til filen der skal downloades og tast enter
-3: Tast Ctrl+5 p LogTexten og tast p enter 2 gange
+3: Tast Ctrl+5 på LogTexten og tast på enter 2 gange
 
 247: I Information om brltty
 12357: R Genstart brltty
 1457: D Download menu
 
-12347: P Opstning
-2347: S Gem opstning
-1237: L Hent opstning
+12347: P Opsætning
+2347: S Gem opsætning
+1237: L Hent opsætning
 
 136: u Side op (page up)
 145: d Side ned (page down)
diff --git a/Tables/Input/md/common.kti b/Tables/Input/md/common.kti
index e5b18dcb1..4ae979dfd 100644
--- a/Tables/Input/md/common.kti
+++ b/Tables/Input/md/common.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/md/default.ktb b/Tables/Input/md/default.ktb
index 4dfd08afc..5e9dc3c5b 100644
--- a/Tables/Input/md/default.ktb
+++ b/Tables/Input/md/default.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/md/fk.ktb b/Tables/Input/md/fk.ktb
index 7130cd304..07a5d2671 100644
--- a/Tables/Input/md/fk.ktb
+++ b/Tables/Input/md/fk.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/md/fk_s.ktb b/Tables/Input/md/fk_s.ktb
index 7a0b6ad60..5a421cb62 100644
--- a/Tables/Input/md/fk_s.ktb
+++ b/Tables/Input/md/fk_s.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/md/fkeys.kti b/Tables/Input/md/fkeys.kti
index 35f2ad4a3..79d0e6165 100644
--- a/Tables/Input/md/fkeys.kti
+++ b/Tables/Input/md/fkeys.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/md/kbd.ktb b/Tables/Input/md/kbd.ktb
index da4f9c2fe..154278493 100644
--- a/Tables/Input/md/kbd.ktb
+++ b/Tables/Input/md/kbd.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/md/keyboard.kti b/Tables/Input/md/keyboard.kti
index c25f0bcca..c9883409c 100644
--- a/Tables/Input/md/keyboard.kti
+++ b/Tables/Input/md/keyboard.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/md/status.kti b/Tables/Input/md/status.kti
index c6839308c..90a3d75f7 100644
--- a/Tables/Input/md/status.kti
+++ b/Tables/Input/md/status.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/menu.kti b/Tables/Input/menu.kti
index f52aa98e7..974ad991e 100644
--- a/Tables/Input/menu.kti
+++ b/Tables/Input/menu.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/mm/common.kti b/Tables/Input/mm/common.kti
index 1f6c738dd..f41d76b11 100644
--- a/Tables/Input/mm/common.kti
+++ b/Tables/Input/mm/common.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/mm/nt.ktb b/Tables/Input/mm/nt.ktb
index 141c2b36f..bf2ee940c 100644
--- a/Tables/Input/mm/nt.ktb
+++ b/Tables/Input/mm/nt.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/mm/pocket.ktb b/Tables/Input/mm/pocket.ktb
index 5f5a49ba4..d2bf90dc9 100644
--- a/Tables/Input/mm/pocket.ktb
+++ b/Tables/Input/mm/pocket.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/mm/smart.ktb b/Tables/Input/mm/smart.ktb
index 3b966a538..8df0fff7c 100644
--- a/Tables/Input/mm/smart.ktb
+++ b/Tables/Input/mm/smart.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/mt/bd1_3.ktb b/Tables/Input/mt/bd1_3.ktb
index cdefbd8fe..3d7eeae0b 100644
--- a/Tables/Input/mt/bd1_3.ktb
+++ b/Tables/Input/mt/bd1_3.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/mt/bd1_3.kti b/Tables/Input/mt/bd1_3.kti
index 7bbdfdaa9..0e70e1e71 100644
--- a/Tables/Input/mt/bd1_3.kti
+++ b/Tables/Input/mt/bd1_3.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/mt/bd1_3s.ktb b/Tables/Input/mt/bd1_3s.ktb
index 5b662a571..efdbf5d27 100644
--- a/Tables/Input/mt/bd1_3s.ktb
+++ b/Tables/Input/mt/bd1_3s.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/mt/bd1_6.ktb b/Tables/Input/mt/bd1_6.ktb
index 8429f1e8e..273f3ef9f 100644
--- a/Tables/Input/mt/bd1_6.ktb
+++ b/Tables/Input/mt/bd1_6.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/mt/bd1_6.kti b/Tables/Input/mt/bd1_6.kti
index dbeefe2f9..ed5968e6e 100644
--- a/Tables/Input/mt/bd1_6.kti
+++ b/Tables/Input/mt/bd1_6.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/mt/bd1_6s.ktb b/Tables/Input/mt/bd1_6s.ktb
index 99ac48e23..18d26f31f 100644
--- a/Tables/Input/mt/bd1_6s.ktb
+++ b/Tables/Input/mt/bd1_6s.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/mt/bd2.ktb b/Tables/Input/mt/bd2.ktb
index e0a226f68..f4e794669 100644
--- a/Tables/Input/mt/bd2.ktb
+++ b/Tables/Input/mt/bd2.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/mt/status.kti b/Tables/Input/mt/status.kti
index eae323e7b..fc204e023 100644
--- a/Tables/Input/mt/status.kti
+++ b/Tables/Input/mt/status.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/nav.kti b/Tables/Input/nav.kti
index 39cdc2136..01902ccec 100644
--- a/Tables/Input/nav.kti
+++ b/Tables/Input/nav.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/np/all.ktb b/Tables/Input/np/all.ktb
index 2a9836538..a2cb53c39 100644
--- a/Tables/Input/np/all.ktb
+++ b/Tables/Input/np/all.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pg/all.ktb b/Tables/Input/pg/all.ktb
index b98f4f227..8bd451a04 100644
--- a/Tables/Input/pg/all.ktb
+++ b/Tables/Input/pg/all.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/2d_l.ktb b/Tables/Input/pm/2d_l.ktb
index b19b1d4f1..6bdf9299a 100644
--- a/Tables/Input/pm/2d_l.ktb
+++ b/Tables/Input/pm/2d_l.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/2d_s.ktb b/Tables/Input/pm/2d_s.ktb
index 12fc5b844..0d76a824a 100644
--- a/Tables/Input/pm/2d_s.ktb
+++ b/Tables/Input/pm/2d_s.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/bar.kti b/Tables/Input/pm/bar.kti
index 0c04f53b7..118223de9 100644
--- a/Tables/Input/pm/bar.kti
+++ b/Tables/Input/pm/bar.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/c.ktb b/Tables/Input/pm/c.ktb
index c12ff1d35..df3e57419 100644
--- a/Tables/Input/pm/c.ktb
+++ b/Tables/Input/pm/c.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/c_486.ktb b/Tables/Input/pm/c_486.ktb
index f49ee0460..eeba5eac9 100644
--- a/Tables/Input/pm/c_486.ktb
+++ b/Tables/Input/pm/c_486.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/el2d_80s.ktb b/Tables/Input/pm/el2d_80s.ktb
index 8e2dbf4fd..5f225497c 100644
--- a/Tables/Input/pm/el2d_80s.ktb
+++ b/Tables/Input/pm/el2d_80s.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/el40c.ktb b/Tables/Input/pm/el40c.ktb
index 8d79bd1ab..77e3c49b4 100644
--- a/Tables/Input/pm/el40c.ktb
+++ b/Tables/Input/pm/el40c.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/el40s.ktb b/Tables/Input/pm/el40s.ktb
index 0e2e3774f..801c6ba9f 100644
--- a/Tables/Input/pm/el40s.ktb
+++ b/Tables/Input/pm/el40s.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/el60c.ktb b/Tables/Input/pm/el60c.ktb
index 02f452451..84aaf1f03 100644
--- a/Tables/Input/pm/el60c.ktb
+++ b/Tables/Input/pm/el60c.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/el66s.ktb b/Tables/Input/pm/el66s.ktb
index 853cddb83..cf3d34b23 100644
--- a/Tables/Input/pm/el66s.ktb
+++ b/Tables/Input/pm/el66s.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/el70s.ktb b/Tables/Input/pm/el70s.ktb
index e93818aab..eaca89911 100644
--- a/Tables/Input/pm/el70s.ktb
+++ b/Tables/Input/pm/el70s.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/el80_ii.ktb b/Tables/Input/pm/el80_ii.ktb
index e1c1d8abb..d1d2f17f9 100644
--- a/Tables/Input/pm/el80_ii.ktb
+++ b/Tables/Input/pm/el80_ii.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/el80c.ktb b/Tables/Input/pm/el80c.ktb
index 8006bc8a2..7208f9ec7 100644
--- a/Tables/Input/pm/el80c.ktb
+++ b/Tables/Input/pm/el80c.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/el80s.ktb b/Tables/Input/pm/el80s.ktb
index fa8b70829..cea4ff4d7 100644
--- a/Tables/Input/pm/el80s.ktb
+++ b/Tables/Input/pm/el80s.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/el_2d_40.ktb b/Tables/Input/pm/el_2d_40.ktb
index fab4c17d1..5bdfab106 100644
--- a/Tables/Input/pm/el_2d_40.ktb
+++ b/Tables/Input/pm/el_2d_40.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/el_2d_66.ktb b/Tables/Input/pm/el_2d_66.ktb
index e9ff9d526..318538173 100644
--- a/Tables/Input/pm/el_2d_66.ktb
+++ b/Tables/Input/pm/el_2d_66.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/el_2d_80.ktb b/Tables/Input/pm/el_2d_80.ktb
index 9c16b318a..b753db706 100644
--- a/Tables/Input/pm/el_2d_80.ktb
+++ b/Tables/Input/pm/el_2d_80.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/el_40_p.ktb b/Tables/Input/pm/el_40_p.ktb
index ae220ef4c..5c0a4ba78 100644
--- a/Tables/Input/pm/el_40_p.ktb
+++ b/Tables/Input/pm/el_40_p.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/el_80.ktb b/Tables/Input/pm/el_80.ktb
index 724b239c9..8316c7f48 100644
--- a/Tables/Input/pm/el_80.ktb
+++ b/Tables/Input/pm/el_80.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/elb_tr_20.ktb b/Tables/Input/pm/elb_tr_20.ktb
index 4d3385be5..7de113ad4 100644
--- a/Tables/Input/pm/elb_tr_20.ktb
+++ b/Tables/Input/pm/elb_tr_20.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/elb_tr_32.ktb b/Tables/Input/pm/elb_tr_32.ktb
index a1076ecb2..1ab3fda80 100644
--- a/Tables/Input/pm/elb_tr_32.ktb
+++ b/Tables/Input/pm/elb_tr_32.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/elba_20.ktb b/Tables/Input/pm/elba_20.ktb
index cdc3702e7..1a48e4cdc 100644
--- a/Tables/Input/pm/elba_20.ktb
+++ b/Tables/Input/pm/elba_20.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/elba_32.ktb b/Tables/Input/pm/elba_32.ktb
index e050785a1..c7cb0ae2b 100644
--- a/Tables/Input/pm/elba_32.ktb
+++ b/Tables/Input/pm/elba_32.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/front13.kti b/Tables/Input/pm/front13.kti
index 60fef2d38..5b7dfe556 100644
--- a/Tables/Input/pm/front13.kti
+++ b/Tables/Input/pm/front13.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/front9.kti b/Tables/Input/pm/front9.kti
index 4a84170dc..3df72e6d1 100644
--- a/Tables/Input/pm/front9.kti
+++ b/Tables/Input/pm/front9.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -52,7 +52,7 @@ bind Attribute+!RoutingKey1 COPY_RECT
 bind Cursor+!RoutingKey1 PRINDENT
 bind Braille+!RoutingKey1 NXINDENT
 
-bind Function+Attribute PASTE
+bind Function+Attribute PASTE:PASTE_ALTMODE
 
 include routing.kti
 
diff --git a/Tables/Input/pm/ib_80.ktb b/Tables/Input/pm/ib_80.ktb
index d46fb1f27..7e6b482ec 100644
--- a/Tables/Input/pm/ib_80.ktb
+++ b/Tables/Input/pm/ib_80.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/keyboard.kti b/Tables/Input/pm/keyboard.kti
index 24fced38e..8667d5be2 100644
--- a/Tables/Input/pm/keyboard.kti
+++ b/Tables/Input/pm/keyboard.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/keys.kti b/Tables/Input/pm/keys.kti
index e60c3a6a4..656a4666b 100644
--- a/Tables/Input/pm/keys.kti
+++ b/Tables/Input/pm/keys.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -41,7 +41,7 @@ bind LeftKeyFront HOME
 bind LeftKeyRear+BarLeft1 DISPMD
 bind LeftKeyRear+BarRight1 CSRTRK
 bind LeftKeyRear+BarUp1 SIXDOTS
-bind LeftKeyRear+BarDown1 PASTE
+bind LeftKeyRear+BarDown1 PASTE:PASTE_ALTMODE
 
 bind LeftKeyRear+BarLeft2 ATTRVIS
 bind LeftKeyRear+BarRight2 CSRVIS
diff --git a/Tables/Input/pm/live.ktb b/Tables/Input/pm/live.ktb
index 5f7f0999d..23884225c 100644
--- a/Tables/Input/pm/live.ktb
+++ b/Tables/Input/pm/live.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/routing.kti b/Tables/Input/pm/routing.kti
index 076ac2401..83d1c2035 100644
--- a/Tables/Input/pm/routing.kti
+++ b/Tables/Input/pm/routing.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/status0.kti b/Tables/Input/pm/status0.kti
index 0938f52c1..047a568b9 100644
--- a/Tables/Input/pm/status0.kti
+++ b/Tables/Input/pm/status0.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/status13.kti b/Tables/Input/pm/status13.kti
index 1a09a5511..718975074 100644
--- a/Tables/Input/pm/status13.kti
+++ b/Tables/Input/pm/status13.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -48,4 +48,4 @@ assign toggleCommand ATTRVIS
 include ../toggle.kti
 
 bind !Status.12 TIME
-bind !Status.13 PASTE
+bind Status.13 PASTE:PASTE_ALTMODE
diff --git a/Tables/Input/pm/status2.kti b/Tables/Input/pm/status2.kti
index 6c6b91c07..3bf744b51 100644
--- a/Tables/Input/pm/status2.kti
+++ b/Tables/Input/pm/status2.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/status20.kti b/Tables/Input/pm/status20.kti
index 14dead426..95b649a38 100644
--- a/Tables/Input/pm/status20.kti
+++ b/Tables/Input/pm/status20.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -68,4 +68,4 @@ assign toggleCommand AUTOREPEAT
 include ../toggle.kti
 
 bind Status.19 TIME
-bind !Status.20 PASTE
+bind Status.20 PASTE:PASTE_ALTMODE
diff --git a/Tables/Input/pm/status22.kti b/Tables/Input/pm/status22.kti
index 741cbcf6f..765fc499b 100644
--- a/Tables/Input/pm/status22.kti
+++ b/Tables/Input/pm/status22.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -73,4 +73,4 @@ assign toggleCommand BRLUCDOTS
 include ../toggle.kti
 
 bind !Status.21 TIME
-bind !Status.22 PASTE
+bind Status.22 PASTE:PASTE_ALTMODE
diff --git a/Tables/Input/pm/status4.kti b/Tables/Input/pm/status4.kti
index 9c1ef7e90..a98fedd73 100644
--- a/Tables/Input/pm/status4.kti
+++ b/Tables/Input/pm/status4.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/switches.kti b/Tables/Input/pm/switches.kti
index bfa63e9b6..ff2af747e 100644
--- a/Tables/Input/pm/switches.kti
+++ b/Tables/Input/pm/switches.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/pm/trio.ktb b/Tables/Input/pm/trio.ktb
index 2a4136549..bdff7dcd6 100644
--- a/Tables/Input/pm/trio.ktb
+++ b/Tables/Input/pm/trio.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/sk/bdp.ktb b/Tables/Input/sk/bdp.ktb
index f88f6c161..1ddd6a5cd 100644
--- a/Tables/Input/sk/bdp.ktb
+++ b/Tables/Input/sk/bdp.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -38,7 +38,7 @@ bind K2+K3 LNBEG
 
 bind K6 FWINLTSKIP
 bind K7 FWINRTSKIP
-bind K6+K7 PASTE
+bind K6+K7 PASTE:PASTE_ALTMODE
 
 bind K4 CSRTRK
 bind K5 RETURN
diff --git a/Tables/Input/sk/ntk.ktb b/Tables/Input/sk/ntk.ktb
index 0b55b17d4..d1790a86f 100644
--- a/Tables/Input/sk/ntk.ktb
+++ b/Tables/Input/sk/ntk.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -74,7 +74,7 @@ bind RightJoystickRight+RoutingKey NXDIFCHAR
 bind LeftJoystickPress+RoutingKey SETMARK
 bind RightJoystickPress+RoutingKey GOTOMARK
 
-bind LeftJoystickPress+RightJoystickPress PASTE
+bind LeftJoystickPress+RightJoystickPress PASTE:PASTE_ALTMODE
 bind RoutingKey+RoutingKey CLIP_COPY
 bind LeftJoystickUp+RoutingKey+RoutingKey CLIP_APPEND
 bind LeftJoystickLeft+RoutingKey CLIP_NEW
diff --git a/Tables/Input/speech.kti b/Tables/Input/speech.kti
index 226fee149..6189ee569 100644
--- a/Tables/Input/speech.kti
+++ b/Tables/Input/speech.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/toggle.kti b/Tables/Input/toggle.kti
index 2eb75c991..e090c1438 100644
--- a/Tables/Input/toggle.kti
+++ b/Tables/Input/toggle.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ts/nav.kti b/Tables/Input/ts/nav.kti
index 4ba0374a1..1b588feb4 100644
--- a/Tables/Input/ts/nav.kti
+++ b/Tables/Input/ts/nav.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ts/nav20.ktb b/Tables/Input/ts/nav20.ktb
index f6e51503f..b55a76040 100644
--- a/Tables/Input/ts/nav20.ktb
+++ b/Tables/Input/ts/nav20.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ts/nav40.ktb b/Tables/Input/ts/nav40.ktb
index ef4553e2e..c910af522 100644
--- a/Tables/Input/ts/nav40.ktb
+++ b/Tables/Input/ts/nav40.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ts/nav80.ktb b/Tables/Input/ts/nav80.ktb
index 3ce1fbe87..2313cdd46 100644
--- a/Tables/Input/ts/nav80.ktb
+++ b/Tables/Input/ts/nav80.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ts/nav_large.kti b/Tables/Input/ts/nav_large.kti
index 1c03fcb58..d145636ca 100644
--- a/Tables/Input/ts/nav_large.kti
+++ b/Tables/Input/ts/nav_large.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ts/nav_small.kti b/Tables/Input/ts/nav_small.kti
index f1e6a93fe..cf56170a9 100644
--- a/Tables/Input/ts/nav_small.kti
+++ b/Tables/Input/ts/nav_small.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ts/pb.kti b/Tables/Input/ts/pb.kti
index bd4201a95..7a51ebc21 100644
--- a/Tables/Input/ts/pb.kti
+++ b/Tables/Input/ts/pb.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ts/pb40.ktb b/Tables/Input/ts/pb40.ktb
index 6238ba4cd..a9536f090 100644
--- a/Tables/Input/ts/pb40.ktb
+++ b/Tables/Input/ts/pb40.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ts/pb65.ktb b/Tables/Input/ts/pb65.ktb
index e6ff93dae..31add9a18 100644
--- a/Tables/Input/ts/pb65.ktb
+++ b/Tables/Input/ts/pb65.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ts/pb80.ktb b/Tables/Input/ts/pb80.ktb
index dc89f70b8..3aad0b656 100644
--- a/Tables/Input/ts/pb80.ktb
+++ b/Tables/Input/ts/pb80.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ts/pb_large.kti b/Tables/Input/ts/pb_large.kti
index efb52fded..cb15d06a0 100644
--- a/Tables/Input/ts/pb_large.kti
+++ b/Tables/Input/ts/pb_large.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ts/pb_small.kti b/Tables/Input/ts/pb_small.kti
index 6927069ef..cb580c02a 100644
--- a/Tables/Input/ts/pb_small.kti
+++ b/Tables/Input/ts/pb_small.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/ts/routing.kti b/Tables/Input/ts/routing.kti
index ef77d1b6c..e8ad0c993 100644
--- a/Tables/Input/ts/routing.kti
+++ b/Tables/Input/ts/routing.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/vo/all.ktb b/Tables/Input/vo/all.ktb
index b869974e4..4ad965b79 100644
--- a/Tables/Input/vo/all.ktb
+++ b/Tables/Input/vo/all.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/vo/all.kti b/Tables/Input/vo/all.kti
index 95f79db95..e51212d21 100644
--- a/Tables/Input/vo/all.kti
+++ b/Tables/Input/vo/all.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -54,7 +54,7 @@ bind Thumb2+RoutingKey CLIP_ADD
 bind Thumb3+RoutingKey COPY_LINE
 bind Thumb4+RoutingKey COPY_RECT
 bind RoutingKey+!RoutingKey CLIP_COPY
-bind Thumb2+Thumb3 PASTE
+bind Thumb2+Thumb3 PASTE:PASTE_ALTMODE
 
 bind Thumb1+Up ATTRUP
 bind Thumb1+Down ATTRDN
diff --git a/Tables/Input/vo/bp.ktb b/Tables/Input/vo/bp.ktb
index e08b65077..fcfba74f1 100644
--- a/Tables/Input/vo/bp.ktb
+++ b/Tables/Input/vo/bp.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Input/vs/all.txt b/Tables/Input/vs/all.txt
index 1b25ddcab..01738aca4 100644
--- a/Tables/Input/vs/all.txt
+++ b/Tables/Input/vs/all.txt
@@ -1,9 +1,9 @@
 Help: VisioBraille
 
 Les touches du clavier auxiliaire s'utilisent comme sous DOS/Windows.
-Les oprations de changement de mode d'affichage (6-8 points), de simulation de
-touches... se font galement comme sous DOS/Windows.
+Les opérations de changement de mode d'affichage (6-8 points), de simulation de
+touches... se font également comme sous DOS/Windows.
 En outre, quelques commandes ~~ suivi d'une lettre sont disponibles,
-reportez-vous au fichier README du rpertoire VisioBraille pour en savoir
+reportez-vous au fichier README du répertoire VisioBraille pour en savoir
 plus.
  
diff --git a/Tables/Keyboard/braille.ktb b/Tables/Keyboard/braille.ktb
index bfa9a248a..1956a426c 100644
--- a/Tables/Keyboard/braille.ktb
+++ b/Tables/Keyboard/braille.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -37,7 +37,7 @@ bind RoutingKey ROUTE
 bind Backward+RoutingKey SETLEFT
 bind Forward+RoutingKey DESCCHAR
 
-bind Backward+Forward PASTE
+bind Backward+Forward PASTE:PASTE_ALTMODE
 bind RoutingKey+!RoutingKey CLIP_COPY
 bind ArrowLeft+RoutingKey CLIP_NEW
 bind ArrowUp+RoutingKey CLIP_ADD
diff --git a/Tables/Keyboard/braille.kti b/Tables/Keyboard/braille.kti
index e486ea8fc..909d0c9cc 100644
--- a/Tables/Keyboard/braille.kti
+++ b/Tables/Keyboard/braille.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Keyboard/desktop.ktb b/Tables/Keyboard/desktop.ktb
index aa4db253f..f4bac531d 100644
--- a/Tables/Keyboard/desktop.ktb
+++ b/Tables/Keyboard/desktop.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Keyboard/desktop.kti b/Tables/Keyboard/desktop.kti
index db3a3b745..79fa63359 100644
--- a/Tables/Keyboard/desktop.kti
+++ b/Tables/Keyboard/desktop.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -39,7 +39,7 @@ bind KP0+!KPEnter HOME
 bind KP0+!KPDivide CLIP_NEW
 bind KP0+!KPMultiply COPY_LINE
 bind KP0+!KPMinus COPY_RECT
-bind KP0+!KPPlus PASTE
+bind KP0+KPPlus PASTE:PASTE_ALTMODE
 bind ControlLeft+KP0+!KPPlus CLIP_ADD
 bind ControlLeft+ShiftLeft+KP0+!KP2 PREFMENU
 bind ControlLeft+ShiftLeft+KP0+!KP4 PREFLOAD
diff --git a/Tables/Keyboard/keypad.ktb b/Tables/Keyboard/keypad.ktb
index 83f4aeb87..5e2b4020f 100644
--- a/Tables/Keyboard/keypad.ktb
+++ b/Tables/Keyboard/keypad.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -70,7 +70,7 @@ bind KPMinus+!KP3 DESCCHAR
 bind KPMinus+!KPDivide RESTARTBRL
 bind KPMinus+!KPMultiply RESTARTSPEECH
 
-bind KPMultiply+!KP5 PASTE
+bind KPMultiply+KP5 PASTE:PASTE_ALTMODE
 bind KPMultiply+!KP7 CLIP_NEW
 bind KPMultiply+!KP1 CLIP_ADD
 bind KPMultiply+!KP9 COPY_LINE
diff --git a/Tables/Keyboard/kp_say.kti b/Tables/Keyboard/kp_say.kti
index 1c872faee..e86bc47db 100644
--- a/Tables/Keyboard/kp_say.kti
+++ b/Tables/Keyboard/kp_say.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Keyboard/kp_speak.kti b/Tables/Keyboard/kp_speak.kti
index a95b32802..7525ee2d8 100644
--- a/Tables/Keyboard/kp_speak.kti
+++ b/Tables/Keyboard/kp_speak.kti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Keyboard/laptop.ktb b/Tables/Keyboard/laptop.ktb
index a03e83b84..9a9adb58a 100644
--- a/Tables/Keyboard/laptop.ktb
+++ b/Tables/Keyboard/laptop.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -76,7 +76,7 @@ bind CapsLock+!X CLIP_NEW
 bind CapsLock+ShiftLeft+!X CLIP_ADD
 bind CapsLock+!C COPY_RECT
 bind CapsLock+ShiftLeft+!C COPY_LINE
-bind CapsLock+!V PASTE
+bind CapsLock+V PASTE:PASTE_ALTMODE
 
 # speech
 bind ControlLeft MUTE
diff --git a/Tables/Keyboard/sun_type6.ktb b/Tables/Keyboard/sun_type6.ktb
index 18bf5e16b..413b7bca5 100644
--- a/Tables/Keyboard/sun_type6.ktb
+++ b/Tables/Keyboard/sun_type6.ktb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/alias.tti b/Tables/Text/alias.tti
index 0ed9eb98b..249eb4136 100644
--- a/Tables/Text/alias.tti
+++ b/Tables/Text/alias.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -33,6 +33,7 @@ alias	\u2007	\s	# figure space
 alias	\u2008	\s	# punctuation space
 alias	\u2009	\s	# thin space
 alias	\u200A	\s	# hair space
+alias	\u200B	\s	# zero width space
 alias	\u202F	\s	# narrow no-break space
 alias	\u205F	\s	# medium mathematical space
 
diff --git a/Tables/Text/ar.ttb b/Tables/Text/ar.ttb
index 0ec8978b0..3e28131f0 100644
--- a/Tables/Text/ar.ttb
+++ b/Tables/Text/ar.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/as.ttb b/Tables/Text/as.ttb
index 0ab3717d5..57e40a647 100644
--- a/Tables/Text/as.ttb
+++ b/Tables/Text/as.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/ascii-basic.tti b/Tables/Text/ascii-basic.tti
index 1966e3ad2..b67a943dd 100644
--- a/Tables/Text/ascii-basic.tti
+++ b/Tables/Text/ascii-basic.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/awa.ttb b/Tables/Text/awa.ttb
index 49587a9f2..bdcfc9145 100644
--- a/Tables/Text/awa.ttb
+++ b/Tables/Text/awa.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/bengali.tti b/Tables/Text/bengali.tti
index ab13def5c..86aff4ce9 100644
--- a/Tables/Text/bengali.tti
+++ b/Tables/Text/bengali.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/bg.ttb b/Tables/Text/bg.ttb
index 6d952fd9e..927ecaf84 100644
--- a/Tables/Text/bg.ttb
+++ b/Tables/Text/bg.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/bh.ttb b/Tables/Text/bh.ttb
index 05dfa15df..0981b79f5 100644
--- a/Tables/Text/bh.ttb
+++ b/Tables/Text/bh.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/blocks.tti b/Tables/Text/blocks.tti
index 7a6a3b0df..e540160b3 100644
--- a/Tables/Text/blocks.tti
+++ b/Tables/Text/blocks.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/bn.ttb b/Tables/Text/bn.ttb
index c4d771c51..6c0e0004d 100644
--- a/Tables/Text/bn.ttb
+++ b/Tables/Text/bn.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/bo.ttb b/Tables/Text/bo.ttb
index 861546a1b..7f5bf66b2 100644
--- a/Tables/Text/bo.ttb
+++ b/Tables/Text/bo.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/boxes.tti b/Tables/Text/boxes.tti
index 3c16c109c..d258916cd 100644
--- a/Tables/Text/boxes.tti
+++ b/Tables/Text/boxes.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/bra.ttb b/Tables/Text/bra.ttb
index 1be177196..ae99c9bb4 100644
--- a/Tables/Text/bra.ttb
+++ b/Tables/Text/bra.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/brf.ttb b/Tables/Text/brf.ttb
index e9ef61e23..9ff446bf3 100644
--- a/Tables/Text/brf.ttb
+++ b/Tables/Text/brf.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/common.tti b/Tables/Text/common.tti
index 268874997..cee1cc623 100644
--- a/Tables/Text/common.tti
+++ b/Tables/Text/common.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/cs.ttb b/Tables/Text/cs.ttb
index 5da42ef6f..ef6b33699 100644
--- a/Tables/Text/cs.ttb
+++ b/Tables/Text/cs.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/ctl-latin.tti b/Tables/Text/ctl-latin.tti
index 65939c73d..099e8bb83 100644
--- a/Tables/Text/ctl-latin.tti
+++ b/Tables/Text/ctl-latin.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/cy.ttb b/Tables/Text/cy.ttb
index a68243a66..03bfba94c 100644
--- a/Tables/Text/cy.ttb
+++ b/Tables/Text/cy.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/da-1252.ttb b/Tables/Text/da-1252.ttb
index 1886c8b8c..bef42dd0e 100644
--- a/Tables/Text/da-1252.ttb
+++ b/Tables/Text/da-1252.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/da-lt.ttb b/Tables/Text/da-lt.ttb
index 7f14867d6..7a927b904 100644
--- a/Tables/Text/da-lt.ttb
+++ b/Tables/Text/da-lt.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/da.ttb b/Tables/Text/da.ttb
index 0a09f0919..253e87534 100644
--- a/Tables/Text/da.ttb
+++ b/Tables/Text/da.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/de-chess.tti b/Tables/Text/de-chess.tti
index a72277ff2..0a1785a4e 100644
--- a/Tables/Text/de-chess.tti
+++ b/Tables/Text/de-chess.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/de.ttb b/Tables/Text/de.ttb
index 6279542b8..337cf260e 100644
--- a/Tables/Text/de.ttb
+++ b/Tables/Text/de.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/devanagari.tti b/Tables/Text/devanagari.tti
index 26a9236da..1dbe41fd8 100644
--- a/Tables/Text/devanagari.tti
+++ b/Tables/Text/devanagari.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/dra.ttb b/Tables/Text/dra.ttb
index 786e71a7f..6fa6f22fc 100644
--- a/Tables/Text/dra.ttb
+++ b/Tables/Text/dra.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/el.ttb b/Tables/Text/el.ttb
index f05f8e8bd..f979a2ff2 100644
--- a/Tables/Text/el.ttb
+++ b/Tables/Text/el.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/en-chess.tti b/Tables/Text/en-chess.tti
index cafaf8ca1..f34c10484 100644
--- a/Tables/Text/en-chess.tti
+++ b/Tables/Text/en-chess.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/en-na-ascii.tti b/Tables/Text/en-na-ascii.tti
index 581703a59..4341b271e 100644
--- a/Tables/Text/en-na-ascii.tti
+++ b/Tables/Text/en-na-ascii.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/en-nabcc.ttb b/Tables/Text/en-nabcc.ttb
index 3da5031f4..c93b96ffd 100644
--- a/Tables/Text/en-nabcc.ttb
+++ b/Tables/Text/en-nabcc.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/en.ttb b/Tables/Text/en.ttb
index 3e249935e..327427cf3 100644
--- a/Tables/Text/en.ttb
+++ b/Tables/Text/en.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/en_CA.ttb b/Tables/Text/en_CA.ttb
index 436066e84..953e29e54 100644
--- a/Tables/Text/en_CA.ttb
+++ b/Tables/Text/en_CA.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/en_GB.ttb b/Tables/Text/en_GB.ttb
index ffbe63391..6a716fc8e 100644
--- a/Tables/Text/en_GB.ttb
+++ b/Tables/Text/en_GB.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/en_US.ttb b/Tables/Text/en_US.ttb
index 2c2e5feca..f74ef2da8 100644
--- a/Tables/Text/en_US.ttb
+++ b/Tables/Text/en_US.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/eo.ttb b/Tables/Text/eo.ttb
index c3af53965..963777b92 100644
--- a/Tables/Text/eo.ttb
+++ b/Tables/Text/eo.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/es.ttb b/Tables/Text/es.ttb
index 52e09fec2..7cd7b09c3 100644
--- a/Tables/Text/es.ttb
+++ b/Tables/Text/es.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/et.ttb b/Tables/Text/et.ttb
index 47b8fb37f..b1300874a 100644
--- a/Tables/Text/et.ttb
+++ b/Tables/Text/et.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/fi.ttb b/Tables/Text/fi.ttb
index 94f6d0e68..98aea07b6 100644
--- a/Tables/Text/fi.ttb
+++ b/Tables/Text/fi.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/fr-2007.ttb b/Tables/Text/fr-2007.ttb
index fb838f5ec..cb509054f 100644
--- a/Tables/Text/fr-2007.ttb
+++ b/Tables/Text/fr-2007.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/fr-cbifs.ttb b/Tables/Text/fr-cbifs.ttb
index ab2ffe628..db640d917 100644
--- a/Tables/Text/fr-cbifs.ttb
+++ b/Tables/Text/fr-cbifs.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/fr-vs.ttb b/Tables/Text/fr-vs.ttb
index 60fb7a57b..533b43b7f 100644
--- a/Tables/Text/fr-vs.ttb
+++ b/Tables/Text/fr-vs.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/fr.ttb b/Tables/Text/fr.ttb
index 9a8e9688a..f79977d6c 100644
--- a/Tables/Text/fr.ttb
+++ b/Tables/Text/fr.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/fr_CA.ttb b/Tables/Text/fr_CA.ttb
index 964f348f2..2197053a4 100644
--- a/Tables/Text/fr_CA.ttb
+++ b/Tables/Text/fr_CA.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/fr_FR.ttb b/Tables/Text/fr_FR.ttb
index 1c4f85ea5..b19ee3c75 100644
--- a/Tables/Text/fr_FR.ttb
+++ b/Tables/Text/fr_FR.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/ga.ttb b/Tables/Text/ga.ttb
index b0a9e6452..a3d11d545 100644
--- a/Tables/Text/ga.ttb
+++ b/Tables/Text/ga.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/gd.ttb b/Tables/Text/gd.ttb
index b30c30586..9e093a977 100644
--- a/Tables/Text/gd.ttb
+++ b/Tables/Text/gd.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/gon.ttb b/Tables/Text/gon.ttb
index 137f3940f..84d4447e9 100644
--- a/Tables/Text/gon.ttb
+++ b/Tables/Text/gon.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/greek.tti b/Tables/Text/greek.tti
index 4b9328739..00ff9d06e 100644
--- a/Tables/Text/greek.tti
+++ b/Tables/Text/greek.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/gu.ttb b/Tables/Text/gu.ttb
index f4773375c..44432f6d5 100644
--- a/Tables/Text/gu.ttb
+++ b/Tables/Text/gu.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/gujarati.tti b/Tables/Text/gujarati.tti
index b2f8f0994..120120aa3 100644
--- a/Tables/Text/gujarati.tti
+++ b/Tables/Text/gujarati.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/gurmukhi.tti b/Tables/Text/gurmukhi.tti
index 65a798c22..e54ba324e 100644
--- a/Tables/Text/gurmukhi.tti
+++ b/Tables/Text/gurmukhi.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/he-old.ttb b/Tables/Text/he-old.ttb
new file mode 100644
index 000000000..bc12e81d1
--- /dev/null
+++ b/Tables/Text/he-old.ttb
@@ -0,0 +1,108 @@
+###############################################################################
+# BRLTTY - A background process providing access to the console screen (when in
+#          text mode) for a blind person using a refreshable braille display.
+#
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
+#
+# BRLTTY comes with ABSOLUTELY NO WARRANTY.
+#
+# This is free software, placed under the terms of the
+# GNU Lesser General Public License, as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any
+# later version. Please see the file LICENSE-LGPL for details.
+#
+# Web Page: http://brltty.app/
+#
+# This software is maintained by Dave Mielke <dave@mielke.cc>.
+###############################################################################
+
+# BRLTTY Text Table - Hebrew
+#
+# Adi Kushnir <adikushnir@gmail.com>
+
+include ltr-latin.tti
+include num-nemeth.tti
+
+char	\x21	( 23 5  8)  # ⢖ ! [EXCLAMATION MARK]
+char	\x22	(    5   )  # ⠐ " [QUOTATION MARK]
+char	\x23	(  3456  )  # ⠼ # [NUMBER SIGN]
+char	\x24	(12 4 6  )  # ⠫ $ [DOLLAR SIGN]
+char	\x25	(1  4 67 )  # ⡩ % [PERCENT SIGN]
+char	\x26	( 234 6  )  # ⠮ & [AMPERSAND]
+char	\x27	(  3     )  # ⠄ ' [APOSTROPHE]
+char	\x28	(123 56  )  # ⠷ ( [LEFT PARENTHESIS]
+char	\x29	( 23456  )  # ⠾ ) [RIGHT PARENTHESIS]
+char	\x2A	(1    6  )  # ⠡ * [ASTERISK]
+char	\x2B	(  34 6  )  # ⠬ + [PLUS SIGN]
+char	\x2C	(     6  )  # ⠠ , [COMMA]
+char	\x2D	(  3  6  )  # ⠤ - [HYPHEN-MINUS]
+char	\x2E	(   4 6  )  # ⠨ . [FULL STOP]
+char	\x2F	(  34    )  # ⠌ / [SOLIDUS]
+char	\x3A	(1   56  )  # ⠱ : [COLON]
+char	\x3B	(    56  )  # ⠰ ; [SEMICOLON]
+char	\x3C	(12   6  )  # ⠣ < [LESS-THAN SIGN]
+char	\x3D	(123456  )  # ⠿ = [EQUALS SIGN]
+char	\x3E	(  345   )  # ⠜ > [GREATER-THAN SIGN]
+char	\x3F	( 2   6 8)  # ⢢ ? [QUESTION MARK]
+char	\x40	(   4  7 )  # ⡈ @ [COMMERCIAL AT]
+char	\x5B	( 2 4 67 )  # ⡪ [ [LEFT SQUARE BRACKET]
+char	\x5C	(12  567 )  # ⡳ \ [REVERSE SOLIDUS]
+char	\x5D	(12 4567 )  # ⡻ ] [RIGHT SQUARE BRACKET]
+char	\x5E	(   45 7 )  # ⡘ ^ [CIRCUMFLEX ACCENT]
+char	\x5F	(   4567 )  # ⡸ _ [LOW LINE]
+char	\x60	(   4    )  # ⠈ ` [GRAVE ACCENT]
+glyph	\x7B	( 23  6  )  # ⠦ { [LEFT CURLY BRACKET]
+char	\x7C	(12  56  )  # ⠳ | [VERTICAL LINE]
+char	\x7D	(12 456  )  # ⠻ } [RIGHT CURLY BRACKET]
+char	\x7E	(   45   )  # ⠘ ~ [TILDE]
+
+glyph	\u05B1	( 2   6  )  # ⠢ ֱ [HEBREW POINT HATAF SEGOL]
+glyph	\u05B2	( 2  5   )  # ⠒ ֲ [HEBREW POINT HATAF PATAH]
+glyph	\u05B3	(  345   )  # ⠜ ֳ [HEBREW POINT HATAF QAMATS]
+glyph	\u05B4	( 2 4    )  # ⠊ ִ [HEBREW POINT HIRIQ]
+glyph	\u05B5	(  34    )  # ⠌ ֵ [HEBREW POINT TSERE]
+glyph	\u05B6	(1   5   )  # ⠑ ֶ [HEBREW POINT SEGOL]
+glyph	\u05B7	(1  4    )  # ⠉ ַ [HEBREW POINT PATAH]
+glyph	\u05B8	(12   6  )  # ⠣ ָ [HEBREW POINT QAMATS]
+glyph	\u05B9	(1 3 5   )  # ⠕ ֹ [HEBREW POINT HOLAM]
+glyph	\u05BB	(1 3  6  )  # ⠥ ֻ [HEBREW POINT QUBUTS]
+glyph	\u05D0	(1       )  # ⠁ א [HEBREW LETTER ALEF]
+glyph	\u05D1	(123  6  )  # ⠧ ב [HEBREW LETTER BET]
+glyph	\u05D2	(12 45   )  # ⠛ ג [HEBREW LETTER GIMEL]
+glyph	\u05D3	(1  45   )  # ⠙ ד [HEBREW LETTER DALET]
+glyph	\u05D4	(12  5   )  # ⠓ ה [HEBREW LETTER HE]
+glyph	\u05D5	( 2 456  )  # ⠺ ו [HEBREW LETTER VAV]
+glyph	\u05D6	(1 3 56  )  # ⠵ ז [HEBREW LETTER ZAYIN]
+glyph	\u05D7	(1 34 6  )  # ⠭ ח [HEBREW LETTER HET]
+glyph	\u05D8	( 2345   )  # ⠞ ט [HEBREW LETTER TET]
+glyph	\u05D9	( 2 45   )  # ⠚ י [HEBREW LETTER YOD]
+char	\u05DA	(1    6 8)  # ⢡ ך [HEBREW LETTER FINAL KAF]
+glyph	\u05DB	(1    6  )  # ⠡ כ [HEBREW LETTER KAF]
+glyph	\u05DC	(123     )  # ⠇ ל [HEBREW LETTER LAMED]
+char	\u05DD	(1 34   8)  # ⢍ ם [HEBREW LETTER FINAL MEM]
+glyph	\u05DE	(1 34    )  # ⠍ מ [HEBREW LETTER MEM]
+char	\u05DF	(1 345  8)  # ⢝ ן [HEBREW LETTER FINAL NUN]
+glyph	\u05E0	(1 345   )  # ⠝ נ [HEBREW LETTER NUN]
+glyph	\u05E1	( 234    )  # ⠎ ס [HEBREW LETTER SAMEKH]
+glyph	\u05E2	(12 4 6  )  # ⠫ ע [HEBREW LETTER AYIN]
+char	\u05E3	(12 4   8)  # ⢋ ף [HEBREW LETTER FINAL PE]
+glyph	\u05E4	(1234    )  # ⠏ פ [HEBREW LETTER PE]
+char	\u05E5	( 234 6 8)  # ⢮ ץ [HEBREW LETTER FINAL TSADI]
+glyph	\u05E6	( 234 6  )  # ⠮ צ [HEBREW LETTER TSADI]
+glyph	\u05E7	(12345   )  # ⠟ ק [HEBREW LETTER QOF]
+glyph	\u05E8	(123 5   )  # ⠗ ר [HEBREW LETTER RESH]
+char	\u05E9	(1  4 6  )  # ⠩ ש [HEBREW LETTER SHIN]
+char	\u05EA	(1  456  )  # ⠹ ת [HEBREW LETTER TAV]
+
+glyph	\uFB1D	(  3 5   )  # ⠔ יִ [HEBREW LETTER YOD WITH HIRIQ]
+glyph	\uFB2A	(1  4 6  )  # ⠩ שׁ [HEBREW LETTER SHIN WITH SHIN DOT]
+glyph	\uFB2B	(1   56  )  # ⠱ שׂ [HEBREW LETTER SHIN WITH SIN DOT]
+glyph	\uFB31	(12      )  # ⠃ בּ [HEBREW LETTER BET WITH DAGESH]
+glyph	\uFB35	(  34 6  )  # ⠬ וּ [HEBREW LETTER VAV WITH DAGESH]
+glyph	\uFB3A	(1 3     )  # ⠅ ךּ [HEBREW LETTER FINAL KAF WITH DAGESH]
+glyph	\uFB3B	(1 3     )  # ⠅ כּ [HEBREW LETTER KAF WITH DAGESH]
+glyph	\uFB43	(1234    )  # ⠏ ףּ [HEBREW LETTER FINAL PE WITH DAGESH]
+glyph	\uFB44	(1234    )  # ⠏ פּ [HEBREW LETTER PE WITH DAGESH]
+glyph	\uFB4A	(12  56  )  # ⠳ תּ [HEBREW LETTER TAV WITH DAGESH]
+
+include common.tti
diff --git a/Tables/Text/he.ttb b/Tables/Text/he.ttb
index 91aaaf66f..c766b80c9 100644
--- a/Tables/Text/he.ttb
+++ b/Tables/Text/he.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -17,92 +17,5 @@
 ###############################################################################
 
 # BRLTTY Text Table - Hebrew
-#
-# Adi Kushnir <adikushnir@gmail.com>
-
-include ltr-latin.tti
-include num-nemeth.tti
-
-char	\x21	( 23 5  8)  # ⢖ ! [EXCLAMATION MARK]
-char	\x22	(    5   )  # ⠐ " [QUOTATION MARK]
-char	\x23	(  3456  )  # ⠼ # [NUMBER SIGN]
-char	\x24	(12 4 6  )  # ⠫ $ [DOLLAR SIGN]
-char	\x25	(1  4 67 )  # ⡩ % [PERCENT SIGN]
-char	\x26	( 234 6  )  # ⠮ & [AMPERSAND]
-char	\x27	(  3     )  # ⠄ ' [APOSTROPHE]
-char	\x28	(123 56  )  # ⠷ ( [LEFT PARENTHESIS]
-char	\x29	( 23456  )  # ⠾ ) [RIGHT PARENTHESIS]
-char	\x2A	(1    6  )  # ⠡ * [ASTERISK]
-char	\x2B	(  34 6  )  # ⠬ + [PLUS SIGN]
-char	\x2C	(     6  )  # ⠠ , [COMMA]
-char	\x2D	(  3  6  )  # ⠤ - [HYPHEN-MINUS]
-char	\x2E	(   4 6  )  # ⠨ . [FULL STOP]
-char	\x2F	(  34    )  # ⠌ / [SOLIDUS]
-char	\x3A	(1   56  )  # ⠱ : [COLON]
-char	\x3B	(    56  )  # ⠰ ; [SEMICOLON]
-char	\x3C	(12   6  )  # ⠣ < [LESS-THAN SIGN]
-char	\x3D	(123456  )  # ⠿ = [EQUALS SIGN]
-char	\x3E	(  345   )  # ⠜ > [GREATER-THAN SIGN]
-char	\x3F	( 2   6 8)  # ⢢ ? [QUESTION MARK]
-char	\x40	(   4  7 )  # ⡈ @ [COMMERCIAL AT]
-char	\x5B	( 2 4 67 )  # ⡪ [ [LEFT SQUARE BRACKET]
-char	\x5C	(12  567 )  # ⡳ \ [REVERSE SOLIDUS]
-char	\x5D	(12 4567 )  # ⡻ ] [RIGHT SQUARE BRACKET]
-char	\x5E	(   45 7 )  # ⡘ ^ [CIRCUMFLEX ACCENT]
-char	\x5F	(   4567 )  # ⡸ _ [LOW LINE]
-char	\x60	(   4    )  # ⠈ ` [GRAVE ACCENT]
-glyph	\x7B	( 23  6  )  # ⠦ { [LEFT CURLY BRACKET]
-char	\x7C	(12  56  )  # ⠳ | [VERTICAL LINE]
-char	\x7D	(12 456  )  # ⠻ } [RIGHT CURLY BRACKET]
-char	\x7E	(   45   )  # ⠘ ~ [TILDE]
-
-glyph	\u05B1	( 2   6  )  # ⠢ ֱ [HEBREW POINT HATAF SEGOL]
-glyph	\u05B2	( 2  5   )  # ⠒ ֲ [HEBREW POINT HATAF PATAH]
-glyph	\u05B3	(  345   )  # ⠜ ֳ [HEBREW POINT HATAF QAMATS]
-glyph	\u05B4	( 2 4    )  # ⠊ ִ [HEBREW POINT HIRIQ]
-glyph	\u05B5	(  34    )  # ⠌ ֵ [HEBREW POINT TSERE]
-glyph	\u05B6	(1   5   )  # ⠑ ֶ [HEBREW POINT SEGOL]
-glyph	\u05B7	(1  4    )  # ⠉ ַ [HEBREW POINT PATAH]
-glyph	\u05B8	(12   6  )  # ⠣ ָ [HEBREW POINT QAMATS]
-glyph	\u05B9	(1 3 5   )  # ⠕ ֹ [HEBREW POINT HOLAM]
-glyph	\u05BB	(1 3  6  )  # ⠥ ֻ [HEBREW POINT QUBUTS]
-glyph	\u05D0	(1       )  # ⠁ א [HEBREW LETTER ALEF]
-glyph	\u05D1	(123  6  )  # ⠧ ב [HEBREW LETTER BET]
-glyph	\u05D2	(12 45   )  # ⠛ ג [HEBREW LETTER GIMEL]
-glyph	\u05D3	(1  45   )  # ⠙ ד [HEBREW LETTER DALET]
-glyph	\u05D4	(12  5   )  # ⠓ ה [HEBREW LETTER HE]
-glyph	\u05D5	( 2 456  )  # ⠺ ו [HEBREW LETTER VAV]
-glyph	\u05D6	(1 3 56  )  # ⠵ ז [HEBREW LETTER ZAYIN]
-glyph	\u05D7	(1 34 6  )  # ⠭ ח [HEBREW LETTER HET]
-glyph	\u05D8	( 2345   )  # ⠞ ט [HEBREW LETTER TET]
-glyph	\u05D9	( 2 45   )  # ⠚ י [HEBREW LETTER YOD]
-char	\u05DA	(1    6 8)  # ⢡ ך [HEBREW LETTER FINAL KAF]
-glyph	\u05DB	(1    6  )  # ⠡ כ [HEBREW LETTER KAF]
-glyph	\u05DC	(123     )  # ⠇ ל [HEBREW LETTER LAMED]
-char	\u05DD	(1 34   8)  # ⢍ ם [HEBREW LETTER FINAL MEM]
-glyph	\u05DE	(1 34    )  # ⠍ מ [HEBREW LETTER MEM]
-char	\u05DF	(1 345  8)  # ⢝ ן [HEBREW LETTER FINAL NUN]
-glyph	\u05E0	(1 345   )  # ⠝ נ [HEBREW LETTER NUN]
-glyph	\u05E1	( 234    )  # ⠎ ס [HEBREW LETTER SAMEKH]
-glyph	\u05E2	(12 4 6  )  # ⠫ ע [HEBREW LETTER AYIN]
-char	\u05E3	(12 4   8)  # ⢋ ף [HEBREW LETTER FINAL PE]
-glyph	\u05E4	(1234    )  # ⠏ פ [HEBREW LETTER PE]
-char	\u05E5	( 234 6 8)  # ⢮ ץ [HEBREW LETTER FINAL TSADI]
-glyph	\u05E6	( 234 6  )  # ⠮ צ [HEBREW LETTER TSADI]
-glyph	\u05E7	(12345   )  # ⠟ ק [HEBREW LETTER QOF]
-glyph	\u05E8	(123 5   )  # ⠗ ר [HEBREW LETTER RESH]
-char	\u05E9	(1  4 6  )  # ⠩ ש [HEBREW LETTER SHIN]
-char	\u05EA	(1  456  )  # ⠹ ת [HEBREW LETTER TAV]
-
-glyph	\uFB1D	(  3 5   )  # ⠔ יִ [HEBREW LETTER YOD WITH HIRIQ]
-glyph	\uFB2A	(1  4 6  )  # ⠩ שׁ [HEBREW LETTER SHIN WITH SHIN DOT]
-glyph	\uFB2B	(1   56  )  # ⠱ שׂ [HEBREW LETTER SHIN WITH SIN DOT]
-glyph	\uFB31	(12      )  # ⠃ בּ [HEBREW LETTER BET WITH DAGESH]
-glyph	\uFB35	(  34 6  )  # ⠬ וּ [HEBREW LETTER VAV WITH DAGESH]
-glyph	\uFB3A	(1 3     )  # ⠅ ךּ [HEBREW LETTER FINAL KAF WITH DAGESH]
-glyph	\uFB3B	(1 3     )  # ⠅ כּ [HEBREW LETTER KAF WITH DAGESH]
-glyph	\uFB43	(1234    )  # ⠏ ףּ [HEBREW LETTER FINAL PE WITH DAGESH]
-glyph	\uFB44	(1234    )  # ⠏ פּ [HEBREW LETTER PE WITH DAGESH]
-glyph	\uFB4A	(12  56  )  # ⠳ תּ [HEBREW LETTER TAV WITH DAGESH]
 
-include common.tti
+include he_IL.ttb
diff --git a/Tables/Text/he_IL.ttb b/Tables/Text/he_IL.ttb
new file mode 100644
index 000000000..91e00d858
--- /dev/null
+++ b/Tables/Text/he_IL.ttb
@@ -0,0 +1,400 @@
+###############################################################################
+# BRLTTY - A background process providing access to the console screen (when in
+#          text mode) for a blind person using a refreshable braille display.
+#
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
+#
+# BRLTTY comes with ABSOLUTELY NO WARRANTY.
+#
+# This is free software, placed under the terms of the
+# GNU Lesser General Public License, as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any
+# later version. Please see the file LICENSE-LGPL for details.
+#
+# Web Page: http://brltty.app/
+#
+# This software is maintained by Dave Mielke <dave@mielke.cc>.
+###############################################################################
+
+# BRLTTY Text Table - Hebrew (Israel)
+#
+# This table is the official Hebrew computer Braille table for Israel,
+# based on the official standard that was approved by the Central
+# library for the blind in Israel in 2016.
+#
+# The table has been created by Erez Kugler from TSR Gaash, Pavel
+# Kaplan, and Adi Kushnir, experts in assistive technologies in
+# Israel.
+#
+# This table supports Hebrew, English, Arabic and Russian, the 4
+# commonly used languages in Israel.
+#
+# Each language in it's native form has different Braille standards,
+# and this table is based on the official Israeli Hebrew standard for
+# treeting things like punctuation and special symbols.
+#
+# Refer to World Braille Usage (3rd edition), page 74
+# <http://liblouis.io/braille-specs/world-braille-usage-third-edition.pdf>
+# and <http://liblouis.io/braille-specs/hebrew>.
+
+# digits
+char	\x30	356	# digit zero
+char	\x31	2	# digit one
+char	\x32	23	# digit two
+char	\x33	25	# digit three
+char	\x34	256	# digit four
+char	\x35	26	# digit five
+char	\x36	235	# digit six
+char	\x37	2356	# digit seven
+char	\x38	236	# digit eight
+char	\x39	35	# digit nine
+
+# punctuation
+char	\x21	2358	# exclamation mark
+char	\x22	5	# quotation mark
+char	\x23	3456	# number sign
+char	\x24	12468	# dollar sign
+char	\x25	1467	# percent sign
+char	\x26	123468	# ampersand
+char	\x27	3	# apostrophe
+char	\x28	123568	# left parenthesis
+char	\x29	234568	# right parenthesis
+char	\x2A	167	# asterisk
+char	\x2B	346	# plus sign
+char	\x2C	6	# comma
+char	\x2D	36	# hyphen-minus
+char	\x2E	46	# full stop
+char	\x2F	34	# solidus
+char	\x3A	1568	# colon
+char	\x3B	56	# semicolon
+char	\x3C	1268	# less-than sign
+char	\x3D	123456	# equals sign
+char	\x3E	3458	# greater-than sign
+char	\x3F	268	# question mark
+char	\x40	47	# commercial at
+char	\x5B	2467	# left square bracket
+char	\x5C	12568	# reverse solidus
+char	\x5D	124567	# right square bracket
+char	\x5E	457	# circumflex accent
+char	\x5F	4567	# low line
+char	\x60	4	# grave accent
+char	\x7C	1256	# vertical line
+char	\u20AA	1468	# new sheqel sign
+char	\u20AC	158	# euro sign
+
+# Hebrew letters
+char	\u05D0	1	# hebrew letter alef
+char	\u05D1	1236	# hebrew letter bet
+char	\u05D2	1245	# hebrew letter gimel
+char	\u05D3	145	# hebrew letter dalet
+char	\u05D4	125	# hebrew letter he
+char	\u05D5	2456	# hebrew letter vav
+char	\u05D6	1356	# hebrew letter zayin
+char	\u05D7	1346	# hebrew letter het
+char	\u05D8	2345	# hebrew letter tet
+char	\u05D9	245	# hebrew letter yod
+char	\u05DA	168	# hebrew letter final kaf
+char	\u05DB	16	# hebrew letter kaf
+char	\u05DC	123	# hebrew letter lamed
+char	\u05DD	1348	# hebrew letter final mem
+char	\u05DE	134	# hebrew letter mem
+char	\u05DF	13458	# hebrew letter final nun
+char	\u05E0	1345	# hebrew letter nun
+char	\u05E1	234	# hebrew letter samekh
+char	\u05E2	1246	# hebrew letter ayin
+char	\u05E3	1248	# hebrew letter final pe
+char	\u05E4	124	# hebrew letter pe
+char	\u05E5	23468	# hebrew letter final tsadi
+char	\u05E6	2346	# hebrew letter tsadi
+char	\u05E7	12345	# hebrew letter qof
+char	\u05E8	1235	# hebrew letter resh
+char	\u05E9	146	# hebrew letter shin
+char	\u05EA	1456	# hebrew letter tav
+
+# Hebrew symbols
+glyph	\u05B0	3	# hebrew point sheva
+glyph	\u05B1	26	# hebrew point hataf segol
+glyph	\u05B2	25	# hebrew point hataf patah
+char	\u05B3	345	# hebrew point hataf qamats
+char	\u05B4	24	# hebrew point hiriq
+glyph	\u05B5	34	# hebrew point tsere
+char	\u05B6	15	# hebrew point segol
+char	\u05B7	14	# hebrew point patah
+glyph	\u05B8	126	# hebrew point qamats
+glyph	\u05B9	135	# hebrew point holam
+glyph	\u05BA	135	# hebrew point holam haser for vav
+glyph	\u05BB	346	# hebrew point qubuts
+glyph	\u05BC	5	# hebrew point dagesh or mapiq
+char	\u05C1	2348	# hebrew point shin dot
+glyph	\u05C2	1568	# hebrew point sin dot
+glyph	\u05C7	126	# hebrew point qamats qatan
+
+# Hebrew accented letters
+glyph	\uFB1D	35	# hebrew letter yod with hiriq
+glyph	\uFB2A	146	# hebrew letter shin with shin dot
+char	\uFB2B	156	# hebrew letter shin with sin dot
+char	\uFB31	12	# hebrew letter bet with dagesh
+glyph	\uFB35	346	# hebrew letter vav with dagesh
+glyph	\uFB3A	13	# hebrew letter final kaf with dagesh
+glyph	\uFB3B	13	# hebrew letter kaf with dagesh
+glyph	\uFB43	1234	# hebrew letter final pe with dagesh
+glyph	\uFB44	1234	# hebrew letter pe with dagesh
+glyph	\uFB4A	1256	# hebrew letter tav with dagesh
+
+# Russian uppercase letters
+glyph	\u0410	17	# cyrillic capital letter a
+glyph	\u0411	127	# cyrillic capital letter be
+glyph	\u0412	24567	# cyrillic capital letter ve
+glyph	\u0413	12457	# cyrillic capital letter ghe
+glyph	\u0414	1457	# cyrillic capital letter de
+glyph	\u0415	157	# cyrillic capital letter ie
+glyph	\u0416	2457	# cyrillic capital letter zhe
+glyph	\u0417	13567	# cyrillic capital letter ze
+glyph	\u0418	247	# cyrillic capital letter i
+glyph	\u0419	123467	# cyrillic capital letter short i
+glyph	\u041A	137	# cyrillic capital letter ka
+glyph	\u041B	1237	# cyrillic capital letter el
+glyph	\u041C	1347	# cyrillic capital letter em
+glyph	\u041D	13457	# cyrillic capital letter en
+glyph	\u041E	1357	# cyrillic capital letter o
+glyph	\u041F	12347	# cyrillic capital letter pe
+glyph	\u0420	12357	# cyrillic capital letter er
+glyph	\u0421	2347	# cyrillic capital letter es
+glyph	\u0422	23457	# cyrillic capital letter te
+glyph	\u0423	1367	# cyrillic capital letter u
+glyph	\u0424	1247	# cyrillic capital letter ef
+glyph	\u0425	1257	# cyrillic capital letter ha
+glyph	\u0426	147	# cyrillic capital letter tse
+glyph	\u0427	123457	# cyrillic capital letter che
+glyph	\u0428	1567	# cyrillic capital letter sha
+glyph	\u0429	13467	# cyrillic capital letter shcha
+glyph	\u042A	123567	# cyrillic capital letter hard sign
+glyph	\u042B	23467	# cyrillic capital letter yeru
+glyph	\u042C	234567	# cyrillic capital letter soft sign
+glyph	\u042D	2467	# cyrillic capital letter e
+glyph	\u042E	12567	# cyrillic capital letter yu
+glyph	\u042F	12467	# cyrillic capital letter ya
+glyph	\u0401	167	# cyrillic capital letter io
+
+# Russian lowercase letters
+glyph	\u0430	1	# cyrillic small letter a
+glyph	\u0431	12	# cyrillic small letter be
+glyph	\u0432	2456	# cyrillic small letter ve
+glyph	\u0433	1245	# cyrillic small letter ghe
+glyph	\u0434	145	# cyrillic small letter de
+glyph	\u0435	15	# cyrillic small letter ie
+glyph	\u0436	245	# cyrillic small letter zhe
+glyph	\u0437	1356	# cyrillic small letter ze
+glyph	\u0438	24	# cyrillic small letter i
+glyph	\u0439	12346	# cyrillic small letter short i
+glyph	\u043A	13	# cyrillic small letter ka
+glyph	\u043B	123	# cyrillic small letter el
+glyph	\u043C	134	# cyrillic small letter em
+glyph	\u043D	1345	# cyrillic small letter en
+glyph	\u043E	135	# cyrillic small letter o
+glyph	\u043F	1234	# cyrillic small letter pe
+glyph	\u0440	1235	# cyrillic small letter er
+glyph	\u0441	234	# cyrillic small letter es
+glyph	\u0442	2345	# cyrillic small letter te
+glyph	\u0443	136	# cyrillic small letter u
+glyph	\u0444	124	# cyrillic small letter ef
+glyph	\u0445	125	# cyrillic small letter ha
+glyph	\u0446	14	# cyrillic small letter tse
+glyph	\u0447	12345	# cyrillic small letter che
+glyph	\u0448	156	# cyrillic small letter sha
+glyph	\u0449	1346	# cyrillic small letter shcha
+glyph	\u044A	12356	# cyrillic small letter hard sign
+glyph	\u044B	2346	# cyrillic small letter yeru
+glyph	\u044C	23456	# cyrillic small letter soft sign
+glyph	\u044D	246	# cyrillic small letter e
+glyph	\u044E	1256	# cyrillic small letter yu
+glyph	\u044F	1246	# cyrillic small letter ya
+glyph	\u0451	16	# cyrillic small letter io
+
+# Latin uppercase letters
+glyph	\x41	17	# latin capital letter a
+glyph	\x42	127	# latin capital letter b
+glyph	\x43	147	# latin capital letter c
+glyph	\x44	1457	# latin capital letter d
+glyph	\x45	157	# latin capital letter e
+glyph	\x46	1247	# latin capital letter f
+glyph	\x47	12457	# latin capital letter g
+glyph	\x48	1257	# latin capital letter h
+glyph	\x49	247	# latin capital letter i
+glyph	\x4A	2457	# latin capital letter j
+glyph	\x4B	137	# latin capital letter k
+glyph	\x4C	1237	# latin capital letter l
+glyph	\x4D	1347	# latin capital letter m
+glyph	\x4E	13457	# latin capital letter n
+glyph	\x4F	1357	# latin capital letter o
+glyph	\x50	12347	# latin capital letter p
+glyph	\x51	123457	# latin capital letter q
+glyph	\x52	12357	# latin capital letter r
+glyph	\x53	2347	# latin capital letter s
+glyph	\x54	23457	# latin capital letter t
+glyph	\x55	1367	# latin capital letter u
+glyph	\x56	12367	# latin capital letter v
+glyph	\x57	24567	# latin capital letter w
+glyph	\x58	13467	# latin capital letter x
+glyph	\x59	134567	# latin capital letter y
+glyph	\x5A	13567	# latin capital letter z
+
+# Latin lowercase letters
+glyph	\x61	1	# latin small letter a
+glyph	\x62	12	# latin small letter b
+glyph	\x63	14	# latin small letter c
+glyph	\x64	145	# latin small letter d
+glyph	\x65	15	# latin small letter e
+glyph	\x66	124	# latin small letter f
+glyph	\x67	1245	# latin small letter g
+glyph	\x68	125	# latin small letter h
+glyph	\x69	24	# latin small letter i
+glyph	\x6A	245	# latin small letter j
+glyph	\x6B	13	# latin small letter k
+glyph	\x6C	123	# latin small letter l
+glyph	\x6D	134	# latin small letter m
+glyph	\x6E	1345	# latin small letter n
+glyph	\x6F	135	# latin small letter o
+glyph	\x70	1234	# latin small letter p
+glyph	\x71	12345	# latin small letter q
+glyph	\x72	1235	# latin small letter r
+glyph	\x73	234	# latin small letter s
+glyph	\x74	2345	# latin small letter t
+glyph	\x75	136	# latin small letter u
+glyph	\x76	1236	# latin small letter v
+glyph	\x77	2456	# latin small letter w
+glyph	\x78	1346	# latin small letter x
+glyph	\x79	13456	# latin small letter y
+glyph	\x7A	1356	# latin small letter z
+
+# Latin uppercase accented letters
+glyph	\xC0	23678	# latin capital letter a with grave
+glyph	\xC1	28	# latin capital letter a with acute
+glyph	\xC2	167	# latin capital letter a with circumflex
+glyph	\xC3	3467	# latin capital letter a with tilde
+glyph	\xC4	567	# latin capital letter a with diaeresis
+glyph	\xC5	34567	# latin capital letter a with ring above
+glyph	\xC6	47	# latin capital letter ae
+glyph	\xC7	123467	# latin capital letter c with cedilla
+glyph	\xC8	3578	# latin capital letter e with grave
+glyph	\xC9	1234567	# latin capital letter e with acute
+glyph	\xCA	1267	# latin capital letter e with circumflex
+glyph	\xCB	2358	# latin capital letter e with diaeresis
+glyph	\xCC	57	# latin capital letter i with grave
+glyph	\xCD	258	# latin capital letter i with acute
+glyph	\xCE	1467	# latin capital letter i with circumflex
+glyph	\xCF	23568	# latin capital letter i with diaeresis
+glyph	\xD0	3567	# latin capital letter eth
+glyph	\xD1	2567	# latin capital letter n with tilde
+glyph	\xD2	578	# latin capital letter o with grave
+glyph	\xD3	2568	# latin capital letter o with acute
+glyph	\xD4	14567	# latin capital letter o with circumflex
+glyph	\xD5	267	# latin capital letter o with tilde
+glyph	\xD6	358	# latin capital letter o with diaeresis
+glyph	\xD8	2467	# latin capital letter o with stroke
+glyph	\xD9	35678	# latin capital letter u with grave
+glyph	\xDA	268	# latin capital letter u with acute
+glyph	\xDB	1567	# latin capital letter u with circumflex
+glyph	\xDC	2368	# latin capital letter u with diaeresis
+glyph	\xDD	3568	# latin capital letter y with acute
+glyph	\xDE	2357	# latin capital letter thorn
+
+# Latin lowercase accented letters
+glyph	\xDF	34568	# latin small letter sharp s
+glyph	\xE0	123568	# latin small letter a with grave
+glyph	\xE1	168	# latin small letter a with acute
+glyph	\xE2	1678	# latin small letter a with circumflex
+glyph	\xE3	34678	# latin small letter a with tilde
+glyph	\xE4	3458	# latin small letter a with diaeresis
+glyph	\xE5	345678	# latin small letter a with ring above
+glyph	\xE6	478	# latin small letter ae
+glyph	\xE7	1234678	# latin small letter c with cedilla
+glyph	\xE8	23468	# latin small letter e with grave
+glyph	\xE9	1234568	# latin small letter e with acute
+glyph	\xEA	12678	# latin small letter e with circumflex
+glyph	\xEB	12468	# latin small letter e with diaeresis
+glyph	\xEC	348	# latin small letter i with grave
+glyph	\xED	1468	# latin small letter i with acute
+glyph	\xEE	14678	# latin small letter i with circumflex
+glyph	\xEF	124568	# latin small letter i with diaeresis
+glyph	\xF0	23458	# latin small letter eth
+glyph	\xF1	13458	# latin small letter n with tilde
+glyph	\xF2	3468	# latin small letter o with grave
+glyph	\xF3	14568	# latin small letter o with acute
+glyph	\xF4	145678	# latin small letter o with circumflex
+glyph	\xF5	1358	# latin small letter o with tilde
+glyph	\xF6	2468	# latin small letter o with diaeresis
+glyph	\xF8	24678	# latin small letter o with stroke
+glyph	\xF9	234568	# latin small letter u with grave
+glyph	\xFA	1568	# latin small letter u with acute
+glyph	\xFB	15678	# latin small letter u with circumflex
+glyph	\xFC	12568	# latin small letter u with diaeresis
+glyph	\xFD	24568	# latin small letter y with acute
+glyph	\xFE	12348	# latin small letter thorn
+glyph	\xFF	134568	# latin small letter y with diaeresis
+
+# Latin symbols
+glyph	\x7B	2468	# left curly bracket
+glyph	\x7D	12456	# right curly bracket
+glyph	\x7E	45	# tilde
+glyph	\xB0	4568	# degree sign
+
+# Arabic letters
+glyph	\u0621	3	# arabic letter hamza
+glyph	\u0622	345	# arabic letter alef with madda above
+glyph	\u0623	34	# arabic letter alef with hamza above
+glyph	\u0624	1256	# arabic letter waw with hamza above
+glyph	\u0625	46	# arabic letter alef with hamza below
+glyph	\u0626	13456	# arabic letter yeh with hamza above
+glyph	\u0627	1	# arabic letter alef
+glyph	\u0628	12	# arabic letter beh
+glyph	\u0629	16	# arabic letter teh marbuta
+glyph	\u062A	2345	# arabic letter teh
+glyph	\u062B	1456	# arabic letter theh
+glyph	\u062C	245	# arabic letter jeem
+glyph	\u062D	156	# arabic letter hah
+glyph	\u062E	1346	# arabic letter khah
+glyph	\u062F	145	# arabic letter dal
+glyph	\u0630	2346	# arabic letter thal
+glyph	\u0631	1235	# arabic letter reh
+glyph	\u0632	1356	# arabic letter zain
+glyph	\u0633	234	# arabic letter seen
+glyph	\u0634	146	# arabic letter sheen
+glyph	\u0635	12346	# arabic letter sad
+glyph	\u0636	1246	# arabic letter dad
+glyph	\u0637	23456	# arabic letter tah
+glyph	\u0638	123456	# arabic letter zah
+glyph	\u0639	12356	# arabic letter ain
+glyph	\u063A	126	# arabic letter ghain
+glyph	\u0641	124	# arabic letter feh
+glyph	\u0642	12345	# arabic letter qaf
+glyph	\u0643	13	# arabic letter kaf
+glyph	\u0644	123	# arabic letter lam
+glyph	\u0645	134	# arabic letter meem
+glyph	\u0646	1345	# arabic letter noon
+glyph	\u0647	125	# arabic letter heh
+glyph	\u0648	2456	# arabic letter waw
+glyph	\u0649	135	# arabic letter alef maksura
+glyph	\u064A	24	# arabic letter yeh
+glyph	\u064B	23	# arabic fathatan
+glyph	\u064C	26	# arabic dammatan
+glyph	\u064D	35	# arabic kasratan
+glyph	\u064E	2	# arabic fatha
+glyph	\u064F	136	# arabic damma
+glyph	\u0650	15	# arabic kasra
+glyph	\u0651	6	# arabic shadda
+glyph	\u0652	25	# arabic sukun
+glyph	\u067E	1234	# arabic letter peh
+glyph	\u0686	14	# arabic letter tcheh
+glyph	\u0698	13568	# arabic letter jeh
+glyph	\u06A4	12368	# arabic letter veh
+glyph	\u06AF	1245	# arabic letter gaf
+glyph	\uFEFC	1236	# arabic ligature lam with alef final form
+
+# Arabic punctuation
+glyph	\u060C	57	# arabic comma
+glyph	\u061B	567	# arabic semicolon
+glyph	\u061F	236	# arabic question mark
+glyph	\u06D4	256	# arabic full stop
+
+include common.tti
diff --git a/Tables/Text/hi.ttb b/Tables/Text/hi.ttb
index e428dd209..839a34b60 100644
--- a/Tables/Text/hi.ttb
+++ b/Tables/Text/hi.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/hr.ttb b/Tables/Text/hr.ttb
index 91a41eb59..8149f45ff 100644
--- a/Tables/Text/hr.ttb
+++ b/Tables/Text/hr.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/hu.ttb b/Tables/Text/hu.ttb
index af5341d7b..2b1d69939 100644
--- a/Tables/Text/hu.ttb
+++ b/Tables/Text/hu.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/hy.ttb b/Tables/Text/hy.ttb
index 02b7fb08f..1954d2f1e 100644
--- a/Tables/Text/hy.ttb
+++ b/Tables/Text/hy.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/is.ttb b/Tables/Text/is.ttb
index ea60dd355..faf6d0502 100644
--- a/Tables/Text/is.ttb
+++ b/Tables/Text/is.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/it.ttb b/Tables/Text/it.ttb
index 7efeeaa3e..eee0eefbe 100644
--- a/Tables/Text/it.ttb
+++ b/Tables/Text/it.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/kannada.tti b/Tables/Text/kannada.tti
index 78c86c135..3f8886e33 100644
--- a/Tables/Text/kannada.tti
+++ b/Tables/Text/kannada.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/kha.ttb b/Tables/Text/kha.ttb
index 8cebc0353..ef0586e91 100644
--- a/Tables/Text/kha.ttb
+++ b/Tables/Text/kha.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/kn.ttb b/Tables/Text/kn.ttb
index 4a7153af3..61e008d4b 100644
--- a/Tables/Text/kn.ttb
+++ b/Tables/Text/kn.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/kok.ttb b/Tables/Text/kok.ttb
index 12c3cd6cf..82cc52fa6 100644
--- a/Tables/Text/kok.ttb
+++ b/Tables/Text/kok.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/kru.ttb b/Tables/Text/kru.ttb
index 6b6723338..1429c334e 100644
--- a/Tables/Text/kru.ttb
+++ b/Tables/Text/kru.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/lt.ttb b/Tables/Text/lt.ttb
index db71c0e49..4df5b433d 100644
--- a/Tables/Text/lt.ttb
+++ b/Tables/Text/lt.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/ltr-alias.tti b/Tables/Text/ltr-alias.tti
index 12420093f..89c1bb1a5 100644
--- a/Tables/Text/ltr-alias.tti
+++ b/Tables/Text/ltr-alias.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/ltr-cyrillic.tti b/Tables/Text/ltr-cyrillic.tti
index c0d7b7b75..8a4ae51ef 100644
--- a/Tables/Text/ltr-cyrillic.tti
+++ b/Tables/Text/ltr-cyrillic.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/ltr-dot8.tti b/Tables/Text/ltr-dot8.tti
index be182934f..5a693cb6d 100644
--- a/Tables/Text/ltr-dot8.tti
+++ b/Tables/Text/ltr-dot8.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/ltr-latin.tti b/Tables/Text/ltr-latin.tti
index 82a74d8cc..e774aabfc 100644
--- a/Tables/Text/ltr-latin.tti
+++ b/Tables/Text/ltr-latin.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/ltr-tibetan.tti b/Tables/Text/ltr-tibetan.tti
index 38726c438..d8d5c3427 100644
--- a/Tables/Text/ltr-tibetan.tti
+++ b/Tables/Text/ltr-tibetan.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/lv.ttb b/Tables/Text/lv.ttb
index ebd71600f..e0f770738 100644
--- a/Tables/Text/lv.ttb
+++ b/Tables/Text/lv.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/malayalam.tti b/Tables/Text/malayalam.tti
index 00ebd8cf9..6c17e78d0 100644
--- a/Tables/Text/malayalam.tti
+++ b/Tables/Text/malayalam.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/mg.ttb b/Tables/Text/mg.ttb
index 552d6153b..b765f03df 100644
--- a/Tables/Text/mg.ttb
+++ b/Tables/Text/mg.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/mi.ttb b/Tables/Text/mi.ttb
index c9db2cdee..b701f1404 100644
--- a/Tables/Text/mi.ttb
+++ b/Tables/Text/mi.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/ml.ttb b/Tables/Text/ml.ttb
index 8138610cc..c92c3d663 100644
--- a/Tables/Text/ml.ttb
+++ b/Tables/Text/ml.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/mni.ttb b/Tables/Text/mni.ttb
index 6f0db2f6b..3fae53453 100644
--- a/Tables/Text/mni.ttb
+++ b/Tables/Text/mni.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/mr.ttb b/Tables/Text/mr.ttb
index 86c34ef67..4ee399d56 100644
--- a/Tables/Text/mr.ttb
+++ b/Tables/Text/mr.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/mt.ttb b/Tables/Text/mt.ttb
index 526ee2c08..b45ef2639 100644
--- a/Tables/Text/mt.ttb
+++ b/Tables/Text/mt.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/mun.ttb b/Tables/Text/mun.ttb
index b7822e716..037866e5b 100644
--- a/Tables/Text/mun.ttb
+++ b/Tables/Text/mun.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/mwr.ttb b/Tables/Text/mwr.ttb
index e12776a09..9f79c68ad 100644
--- a/Tables/Text/mwr.ttb
+++ b/Tables/Text/mwr.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/ne.ttb b/Tables/Text/ne.ttb
index d66b48bba..dec22f416 100644
--- a/Tables/Text/ne.ttb
+++ b/Tables/Text/ne.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/new.ttb b/Tables/Text/new.ttb
index 05ad94c83..da69a0e70 100644
--- a/Tables/Text/new.ttb
+++ b/Tables/Text/new.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/nl.ttb b/Tables/Text/nl.ttb
index 3fd421385..d9e2ccd4b 100644
--- a/Tables/Text/nl.ttb
+++ b/Tables/Text/nl.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/nl_BE.ttb b/Tables/Text/nl_BE.ttb
index b2bb4a488..453e06b4e 100644
--- a/Tables/Text/nl_BE.ttb
+++ b/Tables/Text/nl_BE.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/nl_NL.ttb b/Tables/Text/nl_NL.ttb
index 1b9c22ad6..405198285 100644
--- a/Tables/Text/nl_NL.ttb
+++ b/Tables/Text/nl_NL.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/no-generic.ttb b/Tables/Text/no-generic.ttb
index 6f22d9769..935a39cd2 100644
--- a/Tables/Text/no-generic.ttb
+++ b/Tables/Text/no-generic.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/no-oup.ttb b/Tables/Text/no-oup.ttb
index 05198674e..623772e0d 100644
--- a/Tables/Text/no-oup.ttb
+++ b/Tables/Text/no-oup.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/no.ttb b/Tables/Text/no.ttb
index 4e88679fd..646a0161b 100644
--- a/Tables/Text/no.ttb
+++ b/Tables/Text/no.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/num-alias.tti b/Tables/Text/num-alias.tti
index 00264909a..d4f9ad7d2 100644
--- a/Tables/Text/num-alias.tti
+++ b/Tables/Text/num-alias.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/num-dot6.tti b/Tables/Text/num-dot6.tti
index f085b1d80..2e2cd54cb 100644
--- a/Tables/Text/num-dot6.tti
+++ b/Tables/Text/num-dot6.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/num-dot8.tti b/Tables/Text/num-dot8.tti
index f1e9b3722..165a747a6 100644
--- a/Tables/Text/num-dot8.tti
+++ b/Tables/Text/num-dot8.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/num-french.tti b/Tables/Text/num-french.tti
index b4b578d4f..6daf3d04b 100644
--- a/Tables/Text/num-french.tti
+++ b/Tables/Text/num-french.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/num-nemd8.tti b/Tables/Text/num-nemd8.tti
index 61b117fbf..e20086a31 100644
--- a/Tables/Text/num-nemd8.tti
+++ b/Tables/Text/num-nemd8.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/num-nemeth.tti b/Tables/Text/num-nemeth.tti
index 60eae4317..484f166fb 100644
--- a/Tables/Text/num-nemeth.tti
+++ b/Tables/Text/num-nemeth.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/nwc.ttb b/Tables/Text/nwc.ttb
index f690fbe84..d46154e3d 100644
--- a/Tables/Text/nwc.ttb
+++ b/Tables/Text/nwc.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/or.ttb b/Tables/Text/or.ttb
index 32060e293..85c8ef7a5 100644
--- a/Tables/Text/or.ttb
+++ b/Tables/Text/or.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/oriya.tti b/Tables/Text/oriya.tti
index e828cc3cf..3fbd8530a 100644
--- a/Tables/Text/oriya.tti
+++ b/Tables/Text/oriya.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/pa.ttb b/Tables/Text/pa.ttb
index b40d0c059..4af2e1f04 100644
--- a/Tables/Text/pa.ttb
+++ b/Tables/Text/pa.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/pi.ttb b/Tables/Text/pi.ttb
index fc8704d35..af77095e5 100644
--- a/Tables/Text/pi.ttb
+++ b/Tables/Text/pi.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/pl.ttb b/Tables/Text/pl.ttb
index 0ec85666d..33a0d2678 100644
--- a/Tables/Text/pl.ttb
+++ b/Tables/Text/pl.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/pt.ttb b/Tables/Text/pt.ttb
index dfcfc3024..bb6c07e39 100644
--- a/Tables/Text/pt.ttb
+++ b/Tables/Text/pt.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -17,6 +17,24 @@
 ###############################################################################
 
 # BRLTTY Text Table - Portuguese
+#
+# Tiago Melo Casal <tcasal@intervox.nce.ufrj.br>, 2025.
+#
+# This table is mainly based on the official Portuguese 8-dot computer
+# braille code; defines accented letters, punctuation marks, currency
+# signs, Greek letters, and other characters.
+#
+# For the omissions in the official documentation, they were solved
+# using approximate character definitions of this table itself and
+# resources from other tables so that such gaps would not be left
+# uncovered.
+#
+# Official Braille Code reference:
+# "Grafia Braille para Informática" [Braille Writing for Computing (in
+# Portuguese)], 2005, by "Comissão Brasileira do Braille e Comissão de
+# Braille de Portugal" [both Brazilian Braille Commission and Braille
+# Commission of Portugal].
+# https://www.gov.br/mec/pt-br/media/publicacoes/semesp/grafiainfo.pdf
 
 # the standard representations for the letters of the Latin alphabet
 include ltr-latin.tti
@@ -27,7 +45,7 @@ include ctl-latin.tti
 # the numbers 0-9 are represented by the letters j,a-i with dot 8 added
 include num-dot8.tti
 
-# generated by ttbtest: charset=iso-8859-1
+# originally generated by ttbtest: charset=iso-8859-1
 char \x00	( 234 678)  # 00 ⣮   [NULL]
 # Latin control characters  # 01-1A
 char \x1B	(123 5678)  # 1B ⣷   [ESCAPE]
@@ -39,10 +57,10 @@ char \x20	(        )  # 20 ⠀   [SPACE]
 char \x21	( 23 5  8)  # 21 ⢖ ! [EXCLAMATION MARK]
 char \x22	( 23  6  )  # 22 ⠦ " [QUOTATION MARK]
 char \x23	(  3456  )  # 23 ⠼ # [NUMBER SIGN]
-char \x24	(    56  )  # 24 ⠰ $ [DOLLAR SIGN]
+char \x24	(   4 6  )	# 24 ⠨ $ [cifrão ou dólar | DOLLAR SIGN]
 char \x25	(  3 5678)  # 25 ⣴ % [PERCENT SIGN]
 char \x26	(1234 6 8)  # 26 ⢯ & [AMPERSAND]
-char \x27	(  3   7 )  # 27 ⡄ ' [APOSTROPHE]
+char \x27	(     6  )	# 27 ⠠ ' [apóstrofo genérico ou plica genérica | APOSTROPHE]
 char \x28	(12   6 8)  # 28 ⢣ ( [LEFT PARENTHESIS]
 char \x29	(  345  8)  # 29 ⢜ ) [RIGHT PARENTHESIS]
 char \x2A	(  3 5   )  # 2A ⠔ * [ASTERISK]
@@ -50,7 +68,7 @@ char \x2B	( 23 5   )  # 2B ⠖ + [PLUS SIGN]
 char \x2C	( 2      )  # 2C ⠂ , [COMMA]
 char \x2D	(  3  6  )  # 2D ⠤ - [HYPHEN-MINUS]
 char \x2E	(  3     )  # 2E ⠄ . [FULL STOP]
-char \x2F	(     67 )  # 2F ⡠ / [SOLIDUS]
+char \x2F	( 2  56  )	# 2F ⠲ / [barra | SOLIDUS]
 # Hindu-Arabic numerals     # 30-39
 char \x3A	( 2  5   )  # 3A ⠒ : [COLON]
 char \x3B	( 23     )  # 3B ⠆ ; [SEMICOLON]
@@ -58,55 +76,55 @@ char \x3C	( 2 4 6 8)  # 3C ⢪ < [LESS-THAN SIGN]
 char \x3D	( 23 56  )  # 3D ⠶ = [EQUALS SIGN]
 char \x3E	(1 3 5  8)  # 3E ⢕ > [GREATER-THAN SIGN]
 char \x3F	( 2   6  )  # 3F ⠢ ? [QUESTION MARK]
-char \x40	(1   56 8)  # 40 ⢱ @ [COMMERCIAL AT]
+char \x40	(1   56  )	# 40 ⠱ @ [arroba | COMMERCIAL AT]
 # uppercase Latin alphabet  # 41-5A
 char \x5B	(123 56 8)  # 5B ⢷ [ [LEFT SQUARE BRACKET]
 char \x5C	(  3    8)  # 5C ⢄ \ [REVERSE SOLIDUS]
 char \x5D	( 23456 8)  # 5D ⢾ ] [RIGHT SQUARE BRACKET]
-char \x5E	(   4    )  # 5E ⠈ ^ [CIRCUMFLEX ACCENT]
-char \x5F	(  3 5  8)  # 5F ⢔ _ [LOW LINE]
-char \x60	( 2   6 8)  # 60 ⢢ ` [GRAVE ACCENT]
+char \x5E	( 234 678)	# 5E ⣮ ^ [acento circunflexo | CIRCUMFLEX ACCENT]
+char \x5F	(  3  67 )	# 5F ⡤ _ [sublinha | LOW LINE]
+char \x60	(1  4 678)	# 60 ⣩ ` [acento grave | GRAVE ACCENT]
 # lowercase Latin alphabet  # 61-7A
 char \x7B	(123    8)  # 7B ⢇ { [LEFT CURLY BRACKET]
 char \x7C	(   456  )  # 7C ⠸ | [VERTICAL LINE]
 char \x7D	(   4567 )  # 7D ⡸ } [RIGHT CURLY BRACKET]
-char \x7E	(    5   )  # 7E ⠐ ~ [TILDE]
+char \x7E	( 234 6  )	# 7E ⠮ ~ [til | TILDE]
 char \x7F	(    5 7 )  # 7F ⡐   [DELETE]
-char \xA1	(  3  67 )  # A1 ⡤ ¡ [INVERTED EXCLAMATION MARK]
-char \xA2	(    56 8)  # A2 ⢰ ¢ [CENT SIGN]
-char \xA3	(   4 6  )  # A3 ⠨ £ [POUND SIGN]
+char \xA1	( 23 5 7 )	# A1 ⡖ ¡ [ponto de exclamação invertido | INVERTED EXCLAMATION MARK]
+char \xA2	(1  4  78)	# A2 ⣉ ¢ [centavos de dólar | CENT SIGN]
+char \xA3	(123   78)	# A3 ⣇ £ [libra | POUND SIGN]
 char \xA4	(  3  678)  # A4 ⣤ ¤ [CURRENCY SIGN]
-char \xA5	(   4 6 8)  # A5 ⢨ ¥ [YEN SIGN]
-char \xA6	( 2   678)  # A6 ⣢ ¦ [BROKEN BAR]
-char \xA7	(12345678)  # A7 ⣿ § [SECTION SIGN]
-char \xA8	( 2    78)  # A8 ⣂ ¨ [DIAERESIS]
+char \xA5	(1 345678)	# A5 ⣽ ¥ [iene | YEN SIGN]
+char \xA6	(   45  8)	# A6 ⢘ ¦ [barra cortada | BROKEN BAR]
+char \xA7	( 234   8)	# A7 ⢎ § [parágrafo jurídico ou secção | SECTION SIGN]
+char \xA8	( 234 67 )	# A8 ⡮ ¨ [trema | DIAERESIS]
 char \xA9	(1  4  7 )  # A9 ⡉ © [COPYRIGHT SIGN]
-char \xAA	(   4  7 )  # AA ⡈ ª [FEMININE ORDINAL INDICATOR]
-char \xAB	( 23  67 )  # AB ⡦ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK]
-char \xAC	( 2  5678)  # AC ⣲ ¬ [NOT SIGN]
-char \xAD	(12 4   8)  # AD ⢋ ­ [SOFT HYPHEN]
+char \xAA	(1     78)	# AA ⣁ ª [indicador ordinal feminino | FEMININE ORDINAL INDICATOR]
+char \xAB	( 23  6 8)	# AB ⢦ « [abre aspas angulares | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK]
+char \xAC	(  3   78)	# AC ⣄ ¬ [negação | NOT SIGN]
+char \xAD	(  3  6  )	# AD ⠤ ­ [hífen discricionário | SOFT HYPHEN]
 char \xAE	(123 5  8)  # AE ⢗ ® [REGISTERED SIGN]
 char \xAF	(    5  8)  # AF ⢐ ¯ [MACRON]
-char \xB0	(  3 567 )  # B0 ⡴ ° [DEGREE SIGN]
+char \xB0	(  3 56  )	# B0 ⠴ ° [grau | DEGREE SIGN]
 char \xB1	( 23 5 78)  # B1 ⣖ ± [PLUS-MINUS SIGN]
 char \xB2	( 23    8)  # B2 ⢆ ² [SUPERSCRIPT TWO]
 char \xB3	( 2  5  8)  # B3 ⢒ ³ [SUPERSCRIPT THREE]
-char \xB4	(  3 5 7 )  # B4 ⡔ ´ [ACUTE ACCENT]
-char \xB5	(1 34   8)  # B5 ⢍ µ [MICRO SIGN]
+char \xB4	( 234 6 8)	# B4 ⢮ ´ [acento agudo | ACUTE ACCENT]
+char \xB5	(1 34  78)	# B5 ⣍ µ [micro | MICRO SIGN]
 char \xB6	(12345678)  # B6 ⣿ ¶ [PILCROW SIGN]
-char \xB7	(  3   7 )  # B7 ⡄ · [MIDDLE DOT]
+char \xB7	(  3     )	# B7 ⠄ · [ponto mediano | MIDDLE DOT]
 char \xB8	(1  4   8)  # B8 ⢉ ¸ [CEDILLA]
 char \xB9	(   45 7 )  # B9 ⡘ ¹ [SUPERSCRIPT ONE]
-char \xBA	(  34 6 8)  # BA ⢬ º [MASCULINE ORDINAL INDICATOR]
-char \xBB	( 23  6 8)  # BB ⢦ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK]
+char \xBA	(1 3 5 78)	# BA ⣕ º [indicador ordinal masculino | MASCULINE ORDINAL INDICATOR]
+char \xBB	(  3 56 8)	# BB ⢴ » [fecha aspas angulares | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK]
 char \xBC	(1 3  6 8)  # BC ⢥ ¼ [VULGAR FRACTION ONE QUARTER]
 char \xBD	(123  6 8)  # BD ⢧ ½ [VULGAR FRACTION ONE HALF]
 char \xBE	(  34  78)  # BE ⣌ ¾ [VULGAR FRACTION THREE QUARTERS]
-char \xBF	(  3    8)  # BF ⢄ ¿ [INVERTED QUESTION MARK]
+char \xBF	( 2   6 8)	# BF ⢢ ¿ [ponto de interrogação invertido | INVERTED QUESTION MARK]
 char \xC0	(12 4 67 )  # C0 ⡫ À [LATIN CAPITAL LETTER A WITH GRAVE]
 char \xC1	(123 567 )  # C1 ⡷ Á [LATIN CAPITAL LETTER A WITH ACUTE]
 char \xC2	(1    67 )  # C2 ⡡ Â [LATIN CAPITAL LETTER A WITH CIRCUMFLEX]
-char \xC3	(  3 567 )  # C3 ⡴ Ã [LATIN CAPITAL LETTER A WITH TILDE]
+char \xC3	(  345 7 )	# C3 ⡜ Ã [a til maiúsculo | LATIN CAPITAL LETTER A WITH TILDE]
 char \xC4	(    567 )  # C4 ⡰ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS]
 char \xC5	(  34567 )  # C5 ⡼ Å [LATIN CAPITAL LETTER A WITH RING ABOVE]
 char \xC6	(   4  7 )  # C6 ⡈ Æ [LATIN CAPITAL LETTER AE]
@@ -120,7 +138,7 @@ char \xCD	(  34  7 )  # CD ⡌ Í [LATIN CAPITAL LETTER I WITH ACUTE]
 char \xCE	(1  4 678)  # CE ⣩ Î [LATIN CAPITAL LETTER I WITH CIRCUMFLEX]
 char \xCF	(12 4567 )  # CF ⡻ Ï [LATIN CAPITAL LETTER I WITH DIAERESIS]
 char \xD0	(  345 7 )  # D0 ⡜ Ð [LATIN CAPITAL LETTER ETH]
-char \xD1	(12 45678)  # D1 ⣻ Ñ [LATIN CAPITAL LETTER N WITH TILDE]
+char \xD1	(12 4567 )	# D1 ⡻ Ñ [n maiúsculo til | LATIN CAPITAL LETTER N WITH TILDE]
 char \xD2	( 2 456 8)  # D2 ⢺ Ò [LATIN CAPITAL LETTER O WITH GRAVE]
 char \xD3	(  34 67 )  # D3 ⡬ Ó [LATIN CAPITAL LETTER O WITH ACUTE]
 char \xD4	(1  4567 )  # D4 ⡹ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX]
@@ -152,7 +170,7 @@ char \xED	(  34    )  # ED ⠌ í [LATIN SMALL LETTER I WITH ACUTE]
 char \xEE	(1  4 678)  # EE ⣩ î [LATIN SMALL LETTER I WITH CIRCUMFLEX]
 char \xEF	(12 456  )  # EF ⠻ ï [LATIN SMALL LETTER I WITH DIAERESIS]
 char \xF0	( 23 56 8)  # F0 ⢶ ð [LATIN SMALL LETTER ETH]
-char \xF1	(1 345  8)  # F1 ⢝ ñ [LATIN SMALL LETTER N WITH TILDE]
+char \xF1	(12 456  )	# F1 ⠻ ñ [n til | LATIN SMALL LETTER N WITH TILDE]
 char \xF2	( 2 456 8)  # F2 ⢺ ò [LATIN SMALL LETTER O WITH GRAVE]
 char \xF3	(  34 6  )  # F3 ⠬ ó [LATIN SMALL LETTER O WITH ACUTE]
 char \xF4	(1  456  )  # F4 ⠹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX]
@@ -168,4 +186,93 @@ char \xFD	(12  56 8)  # FD ⢳ ý [LATIN SMALL LETTER Y WITH ACUTE]
 char \xFE	(  3    8)  # FE ⢄ þ [LATIN SMALL LETTER THORN]
 char \xFF	(1 3456 8)  # FF ⢽ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS]
 
+# Greek letters
+char \u0391	(1     7 )	# ⡁ Α [alfa maiúsculo | GREEK CAPITAL LETTER ALPHA]
+char \u03B1	(1     78)	# ⣁ α [alfa minúsculo | GREEK SMALL LETTER ALPHA]
+char \u0392	(12    7 )	# ⡃ Β [beta maiúsculo | GREEK CAPITAL LETTER BETA]
+char \u03B2	(12    78)	# ⣃ β [beta minúsculo | GREEK SMALL LETTER BETA]
+char \u039A	(1 3   7 )	# ⡅ Κ [capa maiúsculo | GREEK CAPITAL LETTER KAPPA]
+char \u03BA	(1 3   78)	# ⣅ κ [capa minúsculo | GREEK SMALL LETTER KAPPA]
+char \u0394	(1  45 7 )	# ⡙ Δ [delta maiúsculo | GREEK CAPITAL LETTER DELTA]
+char \u03B4	(1  45 78)	# ⣙ δ [delta minúsculo | GREEK SMALL LETTER DELTA]
+char \u0395	(1   5 7 )	# ⡑ Ε [épsilon maiúsculo | GREEK CAPITAL LETTER EPSILON]
+char \u03B5	(1   5 78)	# ⣑ ε [épsilon minúsculo | GREEK SMALL LETTER EPSILON]
+char \u0397	(1   567 )	# ⡱ Η [eta maiúsculo | GREEK CAPITAL LETTER ETA]
+char \u03B7	(1   5678)	# ⣱ η [eta minúsculo | GREEK SMALL LETTER ETA]
+char \u03A6	(12 4  7 )	# ⡋ Φ [fi maiúsculo | GREEK CAPITAL LETTER PHI]
+char \u03C6	(12 4  78)	# ⣋ φ [fi minúsculo | GREEK SMALL LETTER PHI]
+char \u0393	(12 45 7 )	# ⡛ Γ [gama maiúsculo | GREEK CAPITAL LETTER GAMMA]
+char \u03B3	(12 45 78)	# ⣛ γ [gama minúsculo | GREEK SMALL LETTER GAMMA]
+char \u0399	( 2 4  7 )	# ⡊ Ι [iota maiúsculo | GREEK CAPITAL LETTER IOTA]
+char \u03B9	( 2 4  78)	# ⣊ ι [iota minúsculo | GREEK SMALL LETTER IOTA]
+char \u03A7	(1234 67 )	# ⡯ Χ [khi maiúsculo | GREEK CAPITAL LETTER CHI]
+char \u03C7	(1234 678)	# ⣯ χ [khi minúsculo | GREEK SMALL LETTER CHI]
+char \u039B	(123   7 )	# ⡇ Λ [lambda maiúsculo | GREEK CAPITAL LETTER LAMDA]
+char \u03BB	(123   78)	# ⣇ λ [lambda minúsculo | GREEK SMALL LETTER LAMDA]
+char \u039C	(1 34  7 )	# ⡍ Μ [mi ou mu maiúsculo | GREEK CAPITAL LETTER MU]
+char \u03BC	(1 34  78)	# ⣍ μ [mi ou mu minúsculo | GREEK SMALL LETTER MU]
+char \u039D	(1 345 7 )	# ⡝ Ν [ni ou nu maiúsculo | GREEK CAPITAL LETTER NU]
+char \u03BD	(1 345 78)	# ⣝ ν [ni ou nu minúsculo | GREEK SMALL LETTER NU]
+char \u03A9	( 2 4567 )	# ⡺ Ω [ômega maiúsculo | GREEK CAPITAL LETTER OMEGA]
+char \u03C9	( 2 45678)	# ⣺ ω [ômega minúsculo | GREEK SMALL LETTER OMEGA]
+char \u039F	(1 3 5 7 )	# ⡕ Ο [omicron maiúsculo | GREEK CAPITAL LETTER OMICRON]
+char \u03BF	(1 3 5 78)	# ⣕ ο [omicron minúsculo | GREEK SMALL LETTER OMICRON]
+char \u03A0	(1234  7 )	# ⡏ Π [pi maiúsculo | GREEK CAPITAL LETTER PI]
+char \u03C0	(1234  78)	# ⣏ π [pi minúsculo | GREEK SMALL LETTER PI]
+char \u03A8	(1 34567 )	# ⡽ Ψ [psi maiúsculo | GREEK CAPITAL LETTER PSI]
+char \u03C8	(1 345678)	# ⣽ ψ [psi minúsculo | GREEK SMALL LETTER PSI]
+char \u03A1	(123 5 7 )	# ⡗ Ρ [rô maiúsculo | GREEK CAPITAL LETTER RHO]
+char \u03C1	(123 5 78)	# ⣗ ρ [rô minúsculo | GREEK SMALL LETTER RHO]
+char \u03A3	( 234  7 )	# ⡎ Σ [sigma maiúsculo | GREEK CAPITAL LETTER SIGMA]
+char \u03C3	( 234  78)	# ⣎ σ [sigma minúsculo | GREEK SMALL LETTER SIGMA]
+char \u03C2	( 234  78)	# ⣎ ς [sigma minúsculo [em fim de palavra] | GREEK SMALL LETTER FINAL SIGMA]
+char \u03A4	( 2345 7 )	# ⡞ Τ [tau maiúsculo | GREEK CAPITAL LETTER TAU]
+char \u03C4	( 2345 78)	# ⣞ τ [tau minúsculo | GREEK SMALL LETTER TAU]
+char \u0398	(1  4567 )	# ⡹ Θ [teta maiúsculo | GREEK CAPITAL LETTER THETA]
+char \u03B8	(1  45678)	# ⣹ θ [teta minúsculo | GREEK SMALL LETTER THETA]
+char \u03A5	(1 3  67 )	# ⡥ Υ [úpsilon maiúsculo | GREEK CAPITAL LETTER UPSILON]
+char \u03C5	(1 3  678)	# ⣥ υ [úpsilon minúsculo | GREEK SMALL LETTER UPSILON]
+char \u039E	(1 34 67 )	# ⡭ Ξ [xi maiúsculo | GREEK CAPITAL LETTER XI]
+char \u03BE	(1 34 678)	# ⣭ ξ [xi minúsculo | GREEK SMALL LETTER XI]
+char \u0396	(1 3 567 )	# ⡵ Ζ [zeta maiúsculo | GREEK CAPITAL LETTER ZETA]
+char \u03B6	(1 3 5678)	# ⣵ ζ [zeta minúsculo | GREEK SMALL LETTER ZETA]
+
+# More symbols
+char \u20AC	(1   5 78)	# ⣑ € [euro | EURO SIGN]
+char \u2227	(1     7 )	# ⡁ ∧ ["e" lógico ou conjunção | LOGICAL AND]
+char \u2228	( 2    7 )	# ⡂ ∨ ["ou" lógico ou disjunção | LOGICAL OR]
+char \u2229	(1   5678)	# ⣱ ∩ [interseção | INTERSECTION]
+char \u222A	(  345 78)	# ⣜ ∪ [união | UNION]
+char \u2260	( 23 567 )	# ⡶ ≠ [diferente | NOT EQUAL TO]
+
+# Accented letters of Esperanto
+char \u0108	(1  4 67 )	# ⡩ Ĉ [c circunflexo maiúsculo | LATIN CAPITAL LETTER C WITH CIRCUMFLEX]
+char \u0109	(1  4 6  )	# ⠩ ĉ [c circunflexo minúsculo | LATIN SMALL LETTER C WITH CIRCUMFLEX]
+char \u011C	(12 4567 )	# ⡻ Ĝ [g circunflexo maiúsculo | LATIN CAPITAL LETTER G WITH CIRCUMFLEX]
+char \u011D	(12 456  )	# ⠻ ĝ [g circunflexo minúsculo | LATIN SMALL LETTER G WITH CIRCUMFLEX]
+char \u0124	(12  567 )	# ⡳ Ĥ [h circunflexo maiúsculo | LATIN CAPITAL LETTER H WITH CIRCUMFLEX]
+char \u0125	(12  56  )	# ⠳ ĥ [h circunflexo minúsculo | LATIN SMALL LETTER H WITH CIRCUMFLEX]
+char \u0134	( 2 4567 )	# ⡺ Ĵ [j circunflexo maiúsculo | LATIN CAPITAL LETTER J WITH CIRCUMFLEX]
+char \u0135	( 2 456  )	# ⠺ ĵ [j circunflexo minúsculo | LATIN SMALL LETTER J WITH CIRCUMFLEX]
+char \u015C	( 234 67 )	# ⡮ Ŝ [s circunflexo maiúsculo | LATIN CAPITAL LETTER S WITH CIRCUMFLEX]
+char \u015D	( 234 6  )	# ⠮ ŝ [s circunflexo minúsculo | LATIN SMALL LETTER S WITH CIRCUMFLEX]
+char \u016C	(  34 67 )	# ⡬ Ŭ [u breve maiúsculo | LATIN CAPITAL LETTER U WITH BREVE]
+char \u016D	(  34 6  )	# ⠬ ŭ [u breve minúsculo | LATIN SMALL LETTER U WITH BREVE]
+
+# Other characters that the official braille code documentation does not defined
+char \u2022	(  3 5   )	# ⠔ • [bolinha | BULLET]
+char \u2026	(  3   7 )	# ⠄ … [reticências | HORIZONTAL ELLIPSIS]
+char \u2044	( 2  56  )	# ⠲ ⁄ [barra de fração | FRACTION SLASH]
+char \u2122	( 2345  8)	# ⢞ ™ [marca registrada | TRADE MARK SIGN]
+char \u2215	( 2  56  )	# ⠲ ∕ [barra de divisão | DIVISION SLASH]
+
+# Other bullets
+char \u25A0	(  3 5   )	# ⠔ ■ [quadrado preto | BLACK SQUARE]
+char \u25A1	(  3 5   )	# ⠔ □ [quadrado branco | WHITE SQUARE]
+char \u25AA	(  3 5   )	# ⠔ ▪ [quadradinho preto | BLACK SMALL SQUARE]
+char \u25CB	(  3 5   )	# ⠔ ○ [círculo branco | WHITE CIRCLE]
+char \u25CF (  3 5   )	# ⠔ ● [círculo | BLACK CIRCLE]
+char \u25E6	(  3 5   )	# ⠔ ◦ [bolinha branca | WHITE BULLET]
+char \u25FE	(  3 5   )	# ⠔ ◾ [quadradinho médio preto | BLACK MEDIUM SMALL SQUARE]
+
 include common.tti
diff --git a/Tables/Text/punc-alternate.tti b/Tables/Text/punc-alternate.tti
index 02be78333..170537a4d 100644
--- a/Tables/Text/punc-alternate.tti
+++ b/Tables/Text/punc-alternate.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/punc-basic.tti b/Tables/Text/punc-basic.tti
index c1b33b934..34bff92bb 100644
--- a/Tables/Text/punc-basic.tti
+++ b/Tables/Text/punc-basic.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/punc-tibetan.tti b/Tables/Text/punc-tibetan.tti
index b60eb0542..27cf8ca90 100644
--- a/Tables/Text/punc-tibetan.tti
+++ b/Tables/Text/punc-tibetan.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/ro.ttb b/Tables/Text/ro.ttb
index ec00eb72b..2a6a1f4cb 100644
--- a/Tables/Text/ro.ttb
+++ b/Tables/Text/ro.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/ru.ttb b/Tables/Text/ru.ttb
index 787f6c1be..e99a00c58 100644
--- a/Tables/Text/ru.ttb
+++ b/Tables/Text/ru.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/sa.ttb b/Tables/Text/sa.ttb
index a4101049a..2fc5235b7 100644
--- a/Tables/Text/sa.ttb
+++ b/Tables/Text/sa.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/sat.ttb b/Tables/Text/sat.ttb
index 22542544f..72cb3f8a4 100644
--- a/Tables/Text/sat.ttb
+++ b/Tables/Text/sat.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/sd.ttb b/Tables/Text/sd.ttb
index d38a1101f..4aa660b5f 100644
--- a/Tables/Text/sd.ttb
+++ b/Tables/Text/sd.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/se.ttb b/Tables/Text/se.ttb
index 15e97d6c6..6509ed6fe 100644
--- a/Tables/Text/se.ttb
+++ b/Tables/Text/se.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/sk.ttb b/Tables/Text/sk.ttb
index 6870da3af..6960ef148 100644
--- a/Tables/Text/sk.ttb
+++ b/Tables/Text/sk.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/sl.ttb b/Tables/Text/sl.ttb
index 92a530391..b3f06575a 100644
--- a/Tables/Text/sl.ttb
+++ b/Tables/Text/sl.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/sv-1989.ttb b/Tables/Text/sv-1989.ttb
index 9ddfa5dc5..180b932e9 100644
--- a/Tables/Text/sv-1989.ttb
+++ b/Tables/Text/sv-1989.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/sv-1996.ttb b/Tables/Text/sv-1996.ttb
index 308ab1d60..30f0fc603 100644
--- a/Tables/Text/sv-1996.ttb
+++ b/Tables/Text/sv-1996.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/sv.ttb b/Tables/Text/sv.ttb
index da92cc565..fde653035 100644
--- a/Tables/Text/sv.ttb
+++ b/Tables/Text/sv.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/sw.ttb b/Tables/Text/sw.ttb
index 7321c45f3..426989787 100644
--- a/Tables/Text/sw.ttb
+++ b/Tables/Text/sw.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/ta.ttb b/Tables/Text/ta.ttb
index 5386c99fb..d6a0d09e5 100644
--- a/Tables/Text/ta.ttb
+++ b/Tables/Text/ta.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/tamil.tti b/Tables/Text/tamil.tti
index 977c2de46..af10e07ff 100644
--- a/Tables/Text/tamil.tti
+++ b/Tables/Text/tamil.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/te.ttb b/Tables/Text/te.ttb
index 0572007e4..d8b439dfd 100644
--- a/Tables/Text/te.ttb
+++ b/Tables/Text/te.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/telugu.tti b/Tables/Text/telugu.tti
index 94a9b77a5..612873902 100644
--- a/Tables/Text/telugu.tti
+++ b/Tables/Text/telugu.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 2008-2024 by The BRLTTY Developers.
+# Copyright (C) 2008-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/tr.ttb b/Tables/Text/tr.ttb
index 467247ae9..336d104d4 100644
--- a/Tables/Text/tr.ttb
+++ b/Tables/Text/tr.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/uk.ttb b/Tables/Text/uk.ttb
index ae8a79ed7..8fb1b4038 100644
--- a/Tables/Text/uk.ttb
+++ b/Tables/Text/uk.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/vi.ttb b/Tables/Text/vi.ttb
index f5427a0fa..7dc720f96 100644
--- a/Tables/Text/vi.ttb
+++ b/Tables/Text/vi.ttb
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tables/Text/win-1252.tti b/Tables/Text/win-1252.tti
index f6f8d85c4..2dfdcaff4 100644
--- a/Tables/Text/win-1252.tti
+++ b/Tables/Text/win-1252.tti
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/braille.tcl b/Tools/braille.tcl
index 4c0e0b238..6e3c08d46 100644
--- a/Tools/braille.tcl
+++ b/Tools/braille.tcl
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/cfbrltty b/Tools/cfbrltty
index a120a17f6..b61646cb3 100755
--- a/Tools/cfbrltty
+++ b/Tools/cfbrltty
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/csv.tcl b/Tools/csv.tcl
index 196f2e7eb..5e06a47c7 100644
--- a/Tools/csv.tcl
+++ b/Tools/csv.tcl
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/gendeps b/Tools/gendeps
index 8ad83e8c3..8a408bff6 100755
--- a/Tools/gendeps
+++ b/Tools/gendeps
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/javacmd b/Tools/javacmd
index 5b861ebb3..c00e7e6f1 100755
--- a/Tools/javacmd
+++ b/Tools/javacmd
@@ -3,7 +3,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
diff --git a/Tools/ktbcheck b/Tools/ktbcheck
index 4370f7fa0..d3109840e 100755
--- a/Tools/ktbcheck
+++ b/Tools/ktbcheck
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/luacmd b/Tools/luacmd
index d58e23d20..2d0c74f2c 100755
--- a/Tools/luacmd
+++ b/Tools/luacmd
@@ -2,7 +2,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/luacmd.lua b/Tools/luacmd.lua
index a142ea42c..65178632c 100644
--- a/Tools/luacmd.lua
+++ b/Tools/luacmd.lua
@@ -1,7 +1,7 @@
 --[[
   libbrlapi - A library providing access to braille terminals for applications.
  
-  Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+  Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
  
   libbrlapi comes with ABSOLUTELY NO WARRANTY.
  
diff --git a/Tools/mkbrltty b/Tools/mkbrltty
index eb1ac78a7..5ba53a24d 100755
--- a/Tools/mkbrltty
+++ b/Tools/mkbrltty
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/mkctbchars b/Tools/mkctbchars
index 099e9d0ff..98f103c23 100755
--- a/Tools/mkctbchars
+++ b/Tools/mkctbchars
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/packages.d/apk.sh b/Tools/packages.d/apk.sh
index b0a562f6c..16534e61f 100644
--- a/Tools/packages.d/apk.sh
+++ b/Tools/packages.d/apk.sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/packages.d/apt.sh b/Tools/packages.d/apt.sh
index 506f3e9ae..f0bc60245 100644
--- a/Tools/packages.d/apt.sh
+++ b/Tools/packages.d/apt.sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/packages.d/brew.sh b/Tools/packages.d/brew.sh
index 9223ee870..493a294e0 100644
--- a/Tools/packages.d/brew.sh
+++ b/Tools/packages.d/brew.sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/packages.d/dnf.sh b/Tools/packages.d/dnf.sh
index 3b9e8decc..456700f92 100644
--- a/Tools/packages.d/dnf.sh
+++ b/Tools/packages.d/dnf.sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/packages.d/pacman.sh b/Tools/packages.d/pacman.sh
index 169a075f5..4438c24a3 100644
--- a/Tools/packages.d/pacman.sh
+++ b/Tools/packages.d/pacman.sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/packages.d/pkg.sh b/Tools/packages.d/pkg.sh
index c815d4c75..7a9decb19 100644
--- a/Tools/packages.d/pkg.sh
+++ b/Tools/packages.d/pkg.sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/packages.d/pkg_info.sh b/Tools/packages.d/pkg_info.sh
index c67923c38..29cde9b5c 100644
--- a/Tools/packages.d/pkg_info.sh
+++ b/Tools/packages.d/pkg_info.sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/packages.d/stubs.sh b/Tools/packages.d/stubs.sh
index 5195b16a8..320d8d8fb 100644
--- a/Tools/packages.d/stubs.sh
+++ b/Tools/packages.d/stubs.sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/packages.d/xbps.sh b/Tools/packages.d/xbps.sh
index 0aea05d62..317b8b316 100644
--- a/Tools/packages.d/xbps.sh
+++ b/Tools/packages.d/xbps.sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/packages.d/zypper.sh b/Tools/packages.d/zypper.sh
index 631dfbc4f..e7b1013a8 100644
--- a/Tools/packages.d/zypper.sh
+++ b/Tools/packages.d/zypper.sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/packages.sh b/Tools/packages.sh
index 7dd63fa21..b41d6fb43 100644
--- a/Tools/packages.sh
+++ b/Tools/packages.sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/pkg-describe b/Tools/pkg-describe
index 5817ffeb5..86a846a13 100755
--- a/Tools/pkg-describe
+++ b/Tools/pkg-describe
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/pkg-install b/Tools/pkg-install
index 336e1f962..972c7a9b3 100755
--- a/Tools/pkg-install
+++ b/Tools/pkg-install
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/pkg-list b/Tools/pkg-list
index ef810a2d9..fb193a7d1 100755
--- a/Tools/pkg-list
+++ b/Tools/pkg-list
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/pkg-remove b/Tools/pkg-remove
index 80a336dd2..eca378af2 100755
--- a/Tools/pkg-remove
+++ b/Tools/pkg-remove
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/pkg-search b/Tools/pkg-search
index d58e5d135..e5da7ba37 100755
--- a/Tools/pkg-search
+++ b/Tools/pkg-search
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/pkg-which b/Tools/pkg-which
index 36c310ee2..0287ac588 100755
--- a/Tools/pkg-which
+++ b/Tools/pkg-which
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/pkgvars b/Tools/pkgvars
index d16441259..aad6cb34a 100755
--- a/Tools/pkgvars
+++ b/Tools/pkgvars
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/pythoncmd b/Tools/pythoncmd
index b75b9d360..e745c50f6 100755
--- a/Tools/pythoncmd
+++ b/Tools/pythoncmd
@@ -2,7 +2,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2005-2024 by
+# Copyright (C) 2005-2025 by
 #   Alexis Robert <alexissoft@free.fr>
 #   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
 #
diff --git a/Tools/reqpkgs b/Tools/reqpkgs
index 33df1635f..60f8230a4 100755
--- a/Tools/reqpkgs
+++ b/Tools/reqpkgs
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/tclcmd b/Tools/tclcmd
index b019e1891..92273658a 100755
--- a/Tools/tclcmd
+++ b/Tools/tclcmd
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/tcltest b/Tools/tcltest
index b3581506f..e187fa670 100755
--- a/Tools/tcltest
+++ b/Tools/tcltest
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/ttytest b/Tools/ttytest
index 4f425b780..9313b7c15 100755
--- a/Tools/ttytest
+++ b/Tools/ttytest
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/updcmdref b/Tools/updcmdref
index 296d1654d..fd86ca549 100755
--- a/Tools/updcmdref
+++ b/Tools/updcmdref
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/updcsvs b/Tools/updcsvs
index 431bb726a..8fb39eea1 100755
--- a/Tools/updcsvs
+++ b/Tools/updcsvs
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/updfiles b/Tools/updfiles
index 05e194794..b962188df 100755
--- a/Tools/updfiles
+++ b/Tools/updfiles
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Tools/updusbdevs b/Tools/updusbdevs
index 28fb7a629..d11afcc1c 100755
--- a/Tools/updusbdevs
+++ b/Tools/updusbdevs
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Windows/mingw.sh b/Windows/mingw.sh
index acfd2f07e..f4831952a 100644
--- a/Windows/mingw.sh
+++ b/Windows/mingw.sh
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Windows/mkwin b/Windows/mkwin
index f82138e91..7507507bd 100755
--- a/Windows/mkwin
+++ b/Windows/mkwin
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/Windows/winsetup b/Windows/winsetup
index 53b62cff9..f5887cdd3 100755
--- a/Windows/winsetup
+++ b/Windows/winsetup
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/acdir/config.guess b/acdir/config.guess
index 568769cff..c7087e507 100755
--- a/acdir/config.guess
+++ b/acdir/config.guess
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2024 Free Software Foundation, Inc.
+#   Copyright 1992-2025 Free Software Foundation, Inc.
 
 # shellcheck disable=SC2006,SC2268 # see below for rationale
 
@@ -60,7 +60,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2024 Free Software Foundation, Inc.
+Copyright 1992-2025 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
diff --git a/acdir/config.sub b/acdir/config.sub
index 153097af5..d9e04b188 100755
--- a/acdir/config.sub
+++ b/acdir/config.sub
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2024 Free Software Foundation, Inc.
+#   Copyright 1992-2025 Free Software Foundation, Inc.
 
 # shellcheck disable=SC2006,SC2268 # see below for rationale
 
@@ -76,7 +76,7 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2024 Free Software Foundation, Inc.
+Copyright 1992-2025 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
diff --git a/acdir/install-sh b/acdir/install-sh
index 3e94e441b..a354d663d 100755
--- a/acdir/install-sh
+++ b/acdir/install-sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/apitest.sh b/apitest.sh
index e88ace549..ef149ffb8 100644
--- a/apitest.sh
+++ b/apitest.sh
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/appveyor.yml b/appveyor.yml
index c18e5e2a9..beeadd6e5 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/autogen b/autogen
index 5aecfbc3e..49d72b811 100755
--- a/autogen
+++ b/autogen
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/bindings.mk b/bindings.mk
index 8bc212d04..292073b9f 100644
--- a/bindings.mk
+++ b/bindings.mk
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/braille.mk b/braille.mk
index bdf6adc3a..3ccb01875 100644
--- a/braille.mk
+++ b/braille.mk
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/brltty-config.sh.in b/brltty-config.sh.in
index 05959e799..d746ace3c 100644
--- a/brltty-config.sh.in
+++ b/brltty-config.sh.in
@@ -4,7 +4,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/brltty-genkey b/brltty-genkey
index 90f4ff010..afa76d19d 100755
--- a/brltty-genkey
+++ b/brltty-genkey
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/brltty-mkuser b/brltty-mkuser
index 64d149b34..1f068cf3b 100755
--- a/brltty-mkuser
+++ b/brltty-mkuser
@@ -1,9 +1,9 @@
-#!/bin/sh
+#!/bin/bash
 ###############################################################################
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -38,7 +38,7 @@ readonly defaultLoginShell="/sbin/nologin"
 showProgramUsageNotes() {
 cat <<END_OF_PROGRAM_USAGE_NOTES
 When creating a new user, these options have the following defaults:
-  -d  ${defaultHomeDirectory:-the home directory isn't defined}
+  -d  ${defaultHomeDirectory:-the home directory is not defined}
   -g  a new group with the same name as the user
   -i  ${defaultUserInformation}
   -l  ${defaultLoginShell}
@@ -66,6 +66,7 @@ addGroups() {
       [ -n "${group}" ] || continue
 
       [ "${group#*/}" = "${group}" ] || {
+         [ -e "${group}" ] || continue
          group="$(stat -c "%G" "${group}")" || :
          [ -n "${group}" ] || continue
       }
@@ -120,7 +121,18 @@ else
    [ -n "${homeDirectory}" ] || homeDirectory="${defaultHomeDirectory}"
    [ -n "${loginShell}" ] || loginShell="${defaultLoginShell}"
 
-   if [ -n "${homeDirectory}" ]
+   if [ -z "${homeDirectory}" ]
+   then
+      createHomeDirectory=false
+   elif [ -e "${homeDirectory}" ]
+   then
+      [ -d "${homeDirectory}" ] || semanticError "not a directory: ${homeDirectory}"
+      createHomeDirectory=false
+   else
+      createHomeDirectory=true
+   fi
+
+   if "${createHomeDirectory}"
    then
       command+=(--create-home)
    else
diff --git a/brltty-prologue.bash b/brltty-prologue.bash
index 84f530953..762972de7 100644
--- a/brltty-prologue.bash
+++ b/brltty-prologue.bash
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/brltty-prologue.lua b/brltty-prologue.lua
index 456632cbe..2ab97f693 100644
--- a/brltty-prologue.lua
+++ b/brltty-prologue.lua
@@ -1,7 +1,7 @@
 --[[
   libbrlapi - A library providing access to braille terminals for applications.
  
-  Copyright (C) 2006-2024 by Dave Mielke <dave@mielke.cc>
+  Copyright (C) 2006-2025 by Dave Mielke <dave@mielke.cc>
  
   libbrlapi comes with ABSOLUTELY NO WARRANTY.
  
diff --git a/brltty-prologue.sh b/brltty-prologue.sh
index 066e265ae..9bcfbdb0d 100644
--- a/brltty-prologue.sh
+++ b/brltty-prologue.sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/brltty-prologue.tcl b/brltty-prologue.tcl
index 88f9587c1..f86bd4e24 100644
--- a/brltty-prologue.tcl
+++ b/brltty-prologue.tcl
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/brltty-setcaps b/brltty-setcaps
index 349710f7b..5dd88d10c 100755
--- a/brltty-setcaps
+++ b/brltty-setcaps
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/brltty-term b/brltty-term
index d3f8a787a..77cb3d3d9 100755
--- a/brltty-term
+++ b/brltty-term
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/brltty-ttysize b/brltty-ttysize
index 581cb6aa0..01f4710ec 100755
--- a/brltty-ttysize
+++ b/brltty-ttysize
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/brltty.pc.in b/brltty.pc.in
index ea2a3cb11..655f4ee28 100644
--- a/brltty.pc.in
+++ b/brltty.pc.in
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -43,7 +43,7 @@ writable_directory=@writable_directory@
 
 execute_root=@execute_root@
 program_directory=${execute_root}@program_directory@
-commands_directory=${execute_root}@commands_directory@
+helpers_directory=${execute_root}@helpers_directory@
 drivers_directory=${execute_root}@drivers_directory@
 tables_directory=${execute_root}@tables_directory@
 include_directory=${execute_root}@include_directory@
diff --git a/brltty.spec.in b/brltty.spec.in
index 2e5c455c7..ad6a0b480 100644
--- a/brltty.spec.in
+++ b/brltty.spec.in
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -97,7 +97,49 @@ has also been incorporated.
 Install this package if you use a refreshable braille display.
 
 
-%package -n brltty-braille-brlapi
+%package utils
+Version: @PACKAGE_VERSION@
+Release: 1
+Group: Development/Tools
+License: LGPL
+
+Requires: libicu
+Requires: expat
+Requires: cldr-emoji-annotation
+
+BuildRequires: libicu-devel
+BuildRequires: expat-devel
+BuildRequires: ncurses-devel
+
+AutoProv: no
+AutoReq: yes
+
+Summary: Commands for maintaining BRLTTY data files.
+%description utils
+This package provides a set of commands for maintaining BRLTTY's datafiles.
+
+
+%package devel
+Version: @PACKAGE_VERSION@
+Release: 1
+Group: Development/Tools
+License: LGPL
+
+AutoProv: no
+AutoReq: yes
+
+Summary: Headers for BRLTTY.
+%description devel
+This package provides many of the header files for BRLTTY's core, as well as
+header files which define the packets and keys for several braille devices.
+
+Install this package if you're developing or maintaining an application which
+needs to (or wishes to) use functionality provided by BRLTTY's core, which
+needs to interpret and/or create raw braille device packets, or which needs to
+interpret key codes as delivered by BrlAPI's raw mode.
+
+
+%package braille-brlapi
 Version: @PACKAGE_VERSION@
 Release: 1
 Group: System Environment/Daemons
@@ -107,7 +149,7 @@ AutoProv: no
 AutoReq: yes
 
 Summary: BrlAPI braille driver for BRLTTY.
-%description -n brltty-braille-brlapi
+%description braille-brlapi
 This package provides the BrlAPI braille driver for BRLTTY.
 
 Install this package if you need to communicate with
@@ -115,7 +157,7 @@ another instance of BRLTTY which is actually in control
 of the braille device.
 
 
-%package -n brltty-braille-xwindow
+%package braille-xwindow
 Version: @PACKAGE_VERSION@
 Release: 1
 Group: System Environment/Daemons
@@ -132,7 +174,7 @@ AutoProv: no
 AutoReq: yes
 
 Summary: XWindow braille driver for BRLTTY.
-%description -n brltty-braille-xwindow
+%description braille-xwindow
 This package provides the XWindow braille driver for BRLTTY.
 This driver presents a virtual braille device within a graphical
 user interface. It is primarily intended for sighted developers
@@ -143,7 +185,7 @@ Install this package if you would like to see how usable an
 application would be by a blind person using a braille device.
 
 
-%package -n brltty-speech-espeak
+%package speech-espeak
 Version: @PACKAGE_VERSION@
 Release: 1
 Group: System Environment/Daemons
@@ -157,14 +199,14 @@ AutoProv: no
 AutoReq: yes
 
 Summary: eSpeak speech driver for BRLTTY.
-%description -n brltty-speech-espeak
+%description speech-espeak
 This package provides the eSpeak speech driver for BRLTTY.
 
 Install this package if you would like to be able to use the
 eSpeak text-to-speech engine.
 
 
-%package -n brltty-speech-espeak-ng
+%package speech-espeak-ng
 Version: @PACKAGE_VERSION@
 Release: 1
 Group: System Environment/Daemons
@@ -178,14 +220,14 @@ AutoProv: no
 AutoReq: yes
 
 Summary: eSpeak-NG speech driver for BRLTTY.
-%description -n brltty-speech-espeak-ng
+%description speech-espeak-ng
 This package provides the eSpeak-NG speech driver for BRLTTY.
 
 Install this package if you would like to be able to use the
 eSpeak-NG text-to-speech engine.
 
 
-%package -n brltty-speech-festival
+%package speech-festival
 Version: @PACKAGE_VERSION@
 Release: 1
 Group: System Environment/Daemons
@@ -197,14 +239,14 @@ AutoProv: no
 AutoReq: yes
 
 Summary: Festival speech driver for BRLTTY.
-%description -n brltty-speech-festival
+%description speech-festival
 This package provides the Festival speech driver for BRLTTY.
 
 Install this package if you would like to be able to use the
 Festival text-to-speech engine.
 
 
-%package -n brltty-speech-flite
+%package speech-flite
 Version: @PACKAGE_VERSION@
 Release: 1
 Group: System Environment/Daemons
@@ -218,14 +260,14 @@ AutoProv: no
 AutoReq: yes
 
 Summary: Festival Lite speech driver for BRLTTY.
-%description -n brltty-speech-flite
+%description speech-flite
 This package provides the Festival Lite speech driver for BRLTTY.
 
 Install this package if you would like to be able to use the
 Festival Lite text-to-speech engine.
 
 
-%package -n brltty-speech-speechd
+%package speech-speechd
 Version: @PACKAGE_VERSION@
 Release: 1
 Group: System Environment/Daemons
@@ -239,14 +281,14 @@ AutoProv: no
 AutoReq: yes
 
 Summary: Speech Dispatcher speech driver for BRLTTY.
-%description -n brltty-speech-speechd
+%description speech-speechd
 This package provides the Speech Dispatcher speech driver for BRLTTY.
 
 Install this package if you would like to be able to use the
 Speech Dispatcher text-to-speech server.
 
 
-%package -n brltty-screen-atspi2
+%package screen-atspi2
 Version: @PACKAGE_VERSION@
 Release: 1
 Group: System Environment/Daemons
@@ -262,7 +304,7 @@ AutoProv: no
 AutoReq: yes
 
 Summary: AT-SPI2 screen driver for BRLTTY.
-%description -n brltty-screen-atspi2
+%description screen-atspi2
 This package provides the AT-SPI2 screen driver for BRLTTY.
 
 Install this package if you would like to be able to
@@ -270,7 +312,7 @@ access graphical applications via the D-Bus port of
 the Assistive Technology Service Provider Interface.
 
 
-%package -n brltty-screen-screen
+%package screen-screen
 Version: @PACKAGE_VERSION@
 Release: 1
 Group: System Environment/Daemons
@@ -281,7 +323,7 @@ AutoReq: yes
 Requires: screen
 
 Summary: Screen screen driver for BRLTTY.
-%description -n brltty-screen-screen
+%description screen-screen
 This package provides the Screen screen driver for BRLTTY.
 
 Install this package if you would like to be able to
@@ -289,122 +331,6 @@ directly access session windows maintained by the
 screen program.
 
 
-%package -n brltty-utils
-Version: @PACKAGE_VERSION@
-Release: 1
-Group: Development/Tools
-License: LGPL
-
-Requires: libicu
-Requires: expat
-Requires: cldr-emoji-annotation
-
-BuildRequires: libicu-devel
-BuildRequires: expat-devel
-BuildRequires: ncurses-devel
-
-AutoProv: no
-AutoReq: yes
-
-Summary: Commands for maintaining BRLTTY data files.
-%description -n brltty-utils
-This package provides a set of commands for maintaining BRLTTY's datafiles.
-
-
-%package -n brltty-devel
-Version: @PACKAGE_VERSION@
-Release: 1
-Group: Development/Tools
-License: LGPL
-
-AutoProv: no
-AutoReq: yes
-
-Summary: Headers for BRLTTY.
-%description -n brltty-devel
-This package provides many of the header files for BRLTTY's core, as well as
-header files which define the packets and keys for several braille devices.
-
-Install this package if you're developing or maintaining an application which
-needs to (or wishes to) use functionality provided by BRLTTY's core, which
-needs to interpret and/or create raw braille device packets, or which needs to
-interpret key codes as delivered by BrlAPI's raw mode.
-
-
-%package -n brltty-systemd
-Version: @PACKAGE_VERSION@
-Release: 1
-Group: System Environment/Daemons
-License: LGPL
-BuildArch: noarch
-
-AutoProv: no
-AutoReq: yes
-Requires: systemd
-
-Summary: Systemd units and wrappers for BRLTTY.
-%description -n brltty-systemd
-This package provides the units and wrapper for managing BRLTTY via Systemd.
-
-Install this package if you'd like to manage BRLTTY processes via Systemd.
-
-
-%package -n brltty-udev
-Version: @PACKAGE_VERSION@
-Release: 1
-Group: System Environment/Daemons
-License: LGPL
-BuildArch: noarch
-
-AutoProv: no
-AutoReq: yes
-Requires: systemd-udev
-
-Summary: BRLTTY Udev rules.
-%description -n brltty-udev
-This package provides the rules and the wrapper for managing BRLTTY via Udev.
-
-Install this package if you'd like to manage BRLTTY processes via Udev.
-It doesn't include the rules for braille devices that use generic USB to serial adapters.
-
-
-%package -n brltty-udev-generic
-Version: @PACKAGE_VERSION@
-Release: 1
-Group: System Environment/Daemons
-License: LGPL
-BuildArch: noarch
-
-AutoProv: no
-AutoReq: yes
-Requires: systemd-udev
-
-Summary: BRLTTY Udev rules for braille devices that use a generic USB to serial adapter.
-%description -n brltty-udev-generic
-This package provides additional rules for managing BRLTTY via Udev.
-
-Install this package in order to support braille devices that use a generic USB to serial adapter.
-
-
-%package -n brltty-dracut
-Version: @PACKAGE_VERSION@
-Release: 1
-Group: System Environment/Daemons
-License: LGPL
-BuildArch: noarch
-
-AutoProv: no
-AutoReq: yes
-Requires: dracut
-Requires: brltty-utils
-
-Summary: Dracut module for BRLTTY.
-%description -n brltty-dracut
-This package provides the module for adding BRLTTY to an initial ramdisk image.
-
-Install this package if you'd like to have braille accessibility BRLTTY processes via Udev.
-
-
 %package -n brlapi
 Version: @api_release@
 Release: 1
@@ -572,6 +498,80 @@ Install this package if you have a Tcl application
 which directly accesses a refreshable braille display.
 
 
+%package systemd
+Version: @PACKAGE_VERSION@
+Release: 1
+Group: System Environment/Daemons
+License: LGPL
+BuildArch: noarch
+
+AutoProv: no
+AutoReq: yes
+Requires: systemd
+
+Summary: Systemd units and wrappers for BRLTTY.
+%description systemd
+This package provides the units and wrapper for managing BRLTTY via Systemd.
+
+Install this package if you'd like to manage BRLTTY processes via Systemd.
+
+
+%package udev
+Version: @PACKAGE_VERSION@
+Release: 1
+Group: System Environment/Daemons
+License: LGPL
+BuildArch: noarch
+
+AutoProv: no
+AutoReq: yes
+Requires: systemd-udev
+
+Summary: BRLTTY Udev rules.
+%description udev
+This package provides the rules and the wrapper for managing BRLTTY via Udev.
+
+Install this package if you'd like to manage BRLTTY processes via Udev.
+It doesn't include the rules for braille devices that use generic USB to serial adapters.
+
+
+%package udev-generic
+Version: @PACKAGE_VERSION@
+Release: 1
+Group: System Environment/Daemons
+License: LGPL
+BuildArch: noarch
+
+AutoProv: no
+AutoReq: yes
+Requires: systemd-udev
+
+Summary: BRLTTY Udev rules for braille devices that use a generic USB to serial adapter.
+%description udev-generic
+This package provides additional rules for managing BRLTTY via Udev.
+
+Install this package in order to support braille devices that use a generic USB to serial adapter.
+
+
+%package dracut
+Version: @PACKAGE_VERSION@
+Release: 1
+Group: System Environment/Daemons
+License: LGPL
+BuildArch: noarch
+
+AutoProv: no
+AutoReq: yes
+Requires: dracut
+Requires: brltty-utils
+
+Summary: Dracut module for BRLTTY.
+%description dracut
+This package provides the module for adding BRLTTY to an initial ramdisk image.
+
+Install this package if you'd like to have braille accessibility BRLTTY processes via Udev.
+
+
 %prep
 # %setup -n %{name}-%{version}
 %setup -n @PACKAGE_TARNAME@-@PACKAGE_VERSION@
@@ -633,58 +633,39 @@ rm -fr "${RPM_BUILD_ROOT}"
 %doc %{_docdir}/*/Manual-BRLTTY
 %config(noreplace) %verify(not size md5 mtime) %{_sysconfdir}/brltty.conf
 
-%files -n brltty-braille-brlapi
+%files utils
+%{_bindir}/brltty-*
+
+%files devel
+%{_includedir}/brltty
+
+%files braille-brlapi
 %{_pkglibdir}/libbrlttybba.so
 
-%files -n brltty-braille-xwindow
+%files braille-xwindow
 %{_pkglibdir}/libbrlttybxw.so
 
-%files -n brltty-speech-espeak
+%files speech-espeak
 %{_pkglibdir}/libbrlttyses.so
 
-%files -n brltty-speech-espeak-ng
+%files speech-espeak-ng
 %{_pkglibdir}/libbrlttysen.so
 
-%files -n brltty-speech-festival
+%files speech-festival
 %{_pkglibdir}/libbrlttysfv.so
 
-%files -n brltty-speech-flite
+%files speech-flite
 %{_pkglibdir}/libbrlttysfl.so
 
-%files -n brltty-speech-speechd
+%files speech-speechd
 %{_pkglibdir}/libbrlttyssd.so
 
-%files -n brltty-screen-atspi2
+%files screen-atspi2
 %{_pkglibdir}/libbrlttyxa2.so
 
-%files -n brltty-screen-screen
+%files screen-screen
 %{_pkglibdir}/libbrlttyxsc.so
 
-%files -n brltty-utils
-%{_bindir}/brltty-*
-
-%files -n brltty-devel
-%{_includedir}/brltty
-
-%files -n brltty-systemd
-%{_unitdir}/*
-%{_sysusersdir}/*
-%{_tmpfilesdir}/*
-%{_pkglibexecdir}/systemd-*
-
-%files -n brltty-udev
-%{_udevrulesdir}/*
-%exclude %{_udevrulesdir}/*-generic*
-%{_pkglibexecdir}/udev-*
-
-%files -n brltty-udev-generic
-%{_udevrulesdir}/*-generic*
-
-%files -n brltty-dracut
-/usr/lib/dracut/modules.d/99brltty
-%config(noreplace) %verify(not size md5 mtime) %{_sysconfdir}/brltty/Initramfs/dracut.conf
-%config(noreplace) %verify(not size md5 mtime) %{_sysconfdir}/brltty/Initramfs/cmdline
-
 %files -n brlapi
 %defattr(-,root,root)
 %{_libdir}/libbrlapi.so.*
@@ -726,90 +707,73 @@ rm -fr "${RPM_BUILD_ROOT}"
 @TCL_DIR@/brlapi-@api_release@/libbrlapi_tcl.so
 @TCL_DIR@/brlapi-@api_release@/pkgIndex.tcl
 
+%files systemd
+%{_unitdir}/*
+%{_sysusersdir}/*
+%{_tmpfilesdir}/*
+%{_pkglibexecdir}/systemd-*
+
+%files udev
+%{_udevrulesdir}/*
+%exclude %{_udevrulesdir}/*-generic*
+%{_pkglibexecdir}/udev-*
+
+%files udev-generic
+%{_udevrulesdir}/*-generic*
+
+%files dracut
+/usr/lib/dracut/modules.d/99brltty
+%config(noreplace) %verify(not size md5 mtime) %{_sysconfdir}/brltty/Initramfs/dracut.conf
+%config(noreplace) %verify(not size md5 mtime) %{_sysconfdir}/brltty/Initramfs/cmdline
+
 
 %changelog
-* Sat Jul 22 2023 Dave Mielke <Dave@Mielke.cc> 6.6
+* Tue Oct 15 2024 Dave Mielke <Dave@Mielke.cc> 6.7
 General changes:
-   The -H (uppercase) option and the concept of hidden options have been removed.
-   For consistency (with -A, -B, -S, -X), the -z and -Z short options have been swapped:
-      -z is now --stay-privileged
-      -Z is now --privilege-parameters
-   Multi-line contracted braille is now supported.
-   The cursor style can now be set to no dots.
-   A rectangular append to the clipboard now ensures a leading newline.
-   README.CommandReference has been added.
-Speech changes:
-   Speech can now be interrupted when writing new text to the input FIFO.
-   Autospeak now provides correct character highlighting to the speech driver.
-   A word is now a whitespace-delimited (rather than an alphanumeric) sequence of characters.
-   Word completion for single-character words now works correctly.
-   The ROUTE_SPEECH command (go to the speech cursor) has been added.
-   The DESC_CURR_CHAR command now speaks phonetically.
-Preferences Menu changes:
-   The PREFRESET command has been added.
-   Space + p + Dots 7-8 is bound to the new PREFRESET command.
-   If the preferences file can't be found then try loading /etc/brltty/default.prefs.
-   Save on Exit now also saves the preferences on program termination.
-   The Speak Key Context preference has been added.
-   The Speak Modifier Key preference has been added.
-Baum braille driver changes:
-   More recent Orbit Reader models have routing keys.
-BrlAPI braille driver changes:
-   The speechChanges (no, yes) parameter has been added.
-CombiBraille braille driver changes:
-   Upgraded to use generic (rather than direct serial) I/O.
-   The routing keys are now supported.
-DotPad braille driver:
-   New - its two-letter driver code is dp.
-   A multi-line text display is supported within its graphic area.
-Freedom Scientific braille driver changes:
-   Minor Focus key binding changes:
-      LeftShift + RoutingKey -> SETLEFT
-      RightShift + RoutingKey -> SWITCHVT
-      LeftSelector + NavrowKey -> PRDIFCHAR
-      RightSelector + NavrowKey -> NXDIFCHAR
+   The -g [--gui-keyboard=] command line option has been added.
+   The -G (--gui-keyboard-table) command line option has been added.
+   The Speak Empty Line preference (default is yes) has been added.
+   The ASPK_EMP_LINE toggle command has been added.
+BrailleMemo braille driver changes:
+   The KGS Next Touch models are now supported.
+FreedomScientific braille driver changes:
+   Bluetooth service discovery is now used to find the serial channel.
 HandyTech braille driver changes:
-   Bluetooth service discovery now needs to be performed (for newer models).
-External Speech speech driver changes:
-   The volume and pitch can now be set.
-   Now disconnects from the server when a write error or timeout occurs.
-   Now tries to reconnect to the server if disconnected.
-   Now correctly handles the receipt of tracking data.
-AtSpi2 screen driver changes:
-   A potential crash on receipt of a cursor routing request has been resolved.
-File Viewer screen driver:
-   New. Its two-letter driver code is fv.
-   A virtual screen presents the specified file (via its file parameter).
-   The height of the screen is the number of lines within the file.
-   The width of the screen is the length of the file's longest line.
+   The Activator Pro models are now supported.
+   USB support for the Basic Braille Plus models has been enabled.
+HIMS braille driver changes:
+   The eMotion is now supported.
+   USB detection of the BrailleSense 6 has been fixed.
 Linux screen driver changes:
-   A message is shown on the braille display if character injection (TIOCSTI) is disabled.
-Terminal Emulator screen driver:
-   New. Its two-letter driver code is em.
-   It monitors a shared memory segment maintained by a terminal emulator
-   for screen content and size, cursor position, etc.
-   It uses a message queue to know when the segment has been updated
-   and to send input typed on the braille device to the terminal emulator.
-   BRLTTY's provided terminal emulator is the new brltty-pty command (in libexec/brltty/).
-   The new brltty-term command runs a shell or terminal manager via brltty-pty,
-   and also runs BRLTTY with its Terminal Emulator screen driver to interact with it.
+   Keyboard input when in graphical mode is now supported.
+   Modifying a character with the Left Alt key is now supported.
+   The CapsLock key is now supported as a modifier (for Orca's laptop mode).
+   Shifted keys have been added to the XT key entry table.
+AtSpi screen driver changes:
+   The Enter key is now mapped to the Return key rather than to Keypad Enter.
+FileViewer screen driver changes:
+   The show=yes,no parameter has been added.
+   Typing any character now beeps as that's invalid on a read-only screen.
+   Home/End now go to the start/end of the current line.
+   Home/End with the Control modifier now go to the start/end of the file.
+Speech FIFO changes:
+   A single write may now contain several packets.
+   Packet options for each of the autospeak echo settings have been added.
+   A packet option allowing a tune to be written has been added.
 BrlAPI changes:
-   The version is now 0.8.5 (it was 0.8.4).
-   Fuzzing support has been added to the server (see README.APIFuzzing).
-   Various fuzzer-detected issues have been resolved.
-Contraction tables:
-   The en-ueb-g1 (English, Unified, Grade 1) contraction table has been added.
-Key tables:
-   A possible stack overflow during table compilation has been resolved.
-   The run directive has been added.
-   The macro directive has been added.
-   The isolated directive has been added.
-   The ktbcheck tool has been added.
+   The version is now 0.8.6 (it was 0.8.5).
+   Setting a subparameter value has been fixed.
+   The BRLAPI_PARAM_DRIVER_PROPERTY_VALUE parameter has been added.
+   The WM_COMMAND window manager property is now monitored for changes.
+   The --write-window and --write-command options have been added to xbrlapi.
+Key table changes:
+   The assignGlobal directive has been added.
 Windows changes:
-   The batch scripts have been improved.
-   The tasks-brltty.bat script has been added.
-   The regquery-brlapi.bat script has been added.
-   The build now includes the Debug\ directory, which contains:
-      The build's config.h, config.mk, and config.log files.
-      Unstripped executables (.exe) and libraries (.dll).
+   The winsetup script now supports the python-location symbolic link.
+Android changes:
+   The release version is no longer allowed to upgrade itself.
+   Translations for the Ukrainian language have been added.
+Language changes:
+   The German contraction table has been updated.
+   A message catalog for the Georgian language has been added.
 
diff --git a/cfg-android b/cfg-android
index d500f721c..864a4c68b 100755
--- a/cfg-android
+++ b/cfg-android
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/cfg-android-abi b/cfg-android-abi
index 9c8c9436e..d81b707b4 100755
--- a/cfg-android-abi
+++ b/cfg-android-abi
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/cfg-darwin b/cfg-darwin
index 305f0db6c..9c6d7b04c 100755
--- a/cfg-darwin
+++ b/cfg-darwin
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/cfg-dos b/cfg-dos
index 990f14cc4..2d6367d9e 100755
--- a/cfg-dos
+++ b/cfg-dos
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/cfg-grub b/cfg-grub
index 384974a3c..f25e49fd2 100755
--- a/cfg-grub
+++ b/cfg-grub
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/cfg-iris b/cfg-iris
index 59c7bc52b..928c51798 100755
--- a/cfg-iris
+++ b/cfg-iris
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/cfg-openbsd b/cfg-openbsd
index 33edf2b7f..07434dd22 100755
--- a/cfg-openbsd
+++ b/cfg-openbsd
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/cfg-windows b/cfg-windows
index 8337d5304..db4468ee5 100755
--- a/cfg-windows
+++ b/cfg-windows
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/chkhdrs b/chkhdrs
index 6ff2e7740..f1ae1d3b3 100755
--- a/chkhdrs
+++ b/chkhdrs
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/common.mk b/common.mk
index 4240e996c..9fccd3508 100644
--- a/common.mk
+++ b/common.mk
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -55,9 +55,9 @@ INSTALL_PROGRAM_DIRECTORY = $(INSTALL_ROOT)$(PROGRAM_DIRECTORY)
 install-program-directory:
 	$(INSTALL_DIRECTORY) $(INSTALL_PROGRAM_DIRECTORY)
 
-INSTALL_COMMANDS_DIRECTORY = $(INSTALL_ROOT)$(COMMANDS_DIRECTORY)
-install-commands-directory:
-	$(INSTALL_DIRECTORY) $(INSTALL_COMMANDS_DIRECTORY)
+INSTALL_HELPERS_DIRECTORY = $(INSTALL_ROOT)$(HELPERS_DIRECTORY)
+install-helpers-directory:
+	$(INSTALL_DIRECTORY) $(INSTALL_HELPERS_DIRECTORY)
 
 INSTALL_DRIVERS_DIRECTORY = $(INSTALL_ROOT)$(DRIVERS_DIRECTORY)
 install-drivers-directory:
diff --git a/config.h.in b/config.h.in
index 718152385..537d3af92 100644
--- a/config.h.in
+++ b/config.h.in
@@ -2,7 +2,7 @@
  * BRLTTY - A background process providing access to the console screen (when in
  *          text mode) for a blind person using a refreshable braille display.
  *
- * Copyright (C) 1995-2024 by The BRLTTY Developers.
+ * Copyright (C) 1995-2025 by The BRLTTY Developers.
  *
  * BRLTTY comes with ABSOLUTELY NO WARRANTY.
  *
@@ -539,7 +539,7 @@ extern "C" {
 #undef PREFERENCES_FILE
 
 /* Define this to be a string containing the path to the helper commands directory. */
-#undef COMMANDS_DIRECTORY
+#undef HELPERS_DIRECTORY
 
 /* Define this to be a string containing the path to the drivers directory. */
 #undef DRIVERS_DIRECTORY
diff --git a/config.mk.in b/config.mk.in
index db7a204f2..d6ec0bc4c 100644
--- a/config.mk.in
+++ b/config.mk.in
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -89,7 +89,7 @@ INSTALL_ROOT = @install_root@
 EXECUTE_ROOT = @execute_root@
 
 PROGRAM_DIRECTORY = @program_directory@
-COMMANDS_DIRECTORY = @commands_directory@
+HELPERS_DIRECTORY = @helpers_directory@
 DRIVERS_DIRECTORY = @drivers_directory@
 UPDATABLE_DIRECTORY = @updatable_directory@
 WRITABLE_DIRECTORY = @writable_directory@
diff --git a/configure.ac b/configure.ac
index 00e914dcc..953e94ad7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
@@ -17,7 +17,7 @@
 ###############################################################################
 
 AC_PREREQ([2.64])
-AC_INIT([BRLTTY], [6.6], [BRLTTY@brltty.app], [brltty], [https://brltty.app/])
+AC_INIT([BRLTTY], [6.7], [BRLTTY@brltty.app], [brltty], [https://brltty.app/])
 AC_CONFIG_SRCDIR([Programs/brltty.c])
 
 AC_CONFIG_MACRO_DIR([m4])
@@ -29,14 +29,14 @@ m4_include([Bindings/OCaml/bindings.m4])
 m4_include([Bindings/Python/bindings.m4])
 m4_include([Bindings/Tcl/bindings.m4])
 
-copyright="© 1995-2024 by The BRLTTY Developers"
+copyright="© 1995-2025 by The BRLTTY Developers"
 AC_SUBST([PACKAGE_COPYRIGHT], ["${copyright}"])
 AC_DEFINE_UNQUOTED([PACKAGE_COPYRIGHT], ["${copyright}"],
                    [Define this to be a string containing the copyright notice.])
 
 AC_SUBST([api_major], [0])
 AC_SUBST([api_minor], [8])
-AC_SUBST([api_revision], [5])
+AC_SUBST([api_revision], [6])
 
 AC_SUBST([api_name], [BrlAPI])
 AC_SUBST([api_version], [${api_major}.${api_minor}])
@@ -142,9 +142,9 @@ BRLTTY_ARG_REQUIRED(
 )
 
 BRLTTY_ARG_REQUIRED(
-   [commands-directory], [DIRECTORY],
+   [helpers-directory], [DIRECTORY],
    [path to directory containing helper commands],
-   [commands_directory], ["${libexecdir}/${PACKAGE_TARNAME}"]
+   [helpers_directory], ["${libexecdir}/${PACKAGE_TARNAME}"]
 )
 
 BRLTTY_ARG_REQUIRED(
@@ -806,8 +806,8 @@ BRLTTY_ARG_ENABLE(
    [],
 [dnl
   AC_CACHE_CHECK([for LLVM fuzzer], [brltty_cv_llvm_fuzzer], [dnl
-    HOST_CPU="`$CC -print-multiarch | sed -e 's/-.*//'`"
-    fuzzer_libs="`$CC -print-runtime-dir`/libclang_rt.fuzzer_no_main-$HOST_CPU.a -lstdc++ -lm"
+    HOST_CPU="`$CC -print-target-triple | sed -e 's/-.*//'`"
+    fuzzer_libs="`$CC -print-file-name=libclang_rt.fuzzer_no_main-$HOST_CPU.a` -lstdc++ -lm"
     CFLAGS="$CFLAGS -fsanitize=fuzzer-no-link -fsanitize=address,undefined -fstack-protector-strong"
     LIBS="$LIBS -fsanitize=address,undefined -lubsan"
     OLD_LIBS="$LIBS"
@@ -1992,7 +1992,7 @@ BRLTTY_DEFINE_DIRECTORY([TABLES_DIRECTORY], [${execute_root}${tables_directory}]
 BRLTTY_DEFINE_DIRECTORY([DRIVERS_DIRECTORY], [${execute_root}${drivers_directory}],
                         [Define this to be a string containing the path to the drivers directory.])
 
-BRLTTY_DEFINE_DIRECTORY([COMMANDS_DIRECTORY], [${execute_root}${commands_directory}],
+BRLTTY_DEFINE_DIRECTORY([HELPERS_DIRECTORY], [${execute_root}${helpers_directory}],
                         [Define this to be a string containing the path to the helper commands directory.])
 
 BRLTTY_PUBLIC_DIRECTORY([CONFIGURATION_DIRECTORY], [${sysconfdir}],
diff --git a/document.mk b/document.mk
index 8a5f79443..e82e27da5 100644
--- a/document.mk
+++ b/document.mk
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/getrevid b/getrevid
index 6fe3fe095..8b46cb341 100755
--- a/getrevid
+++ b/getrevid
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/m4/brltty.m4 b/m4/brltty.m4
index e32a26c37..49f972832 100644
--- a/m4/brltty.m4
+++ b/m4/brltty.m4
@@ -1,7 +1,7 @@
 ###############################################################################
 # libbrlapi - A library providing access to braille terminals for applications.
 #
-# Copyright (C) 1995-2024 by Dave Mielke <dave@mielke.cc>
+# Copyright (C) 1995-2025 by Dave Mielke <dave@mielke.cc>
 #
 # libbrlapi comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/mk4build b/mk4build
index 0c23155f3..2a4979ec9 100755
--- a/mk4build
+++ b/mk4build
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/mkdocktb b/mkdocktb
index 6ff3fe959..e0a610996 100755
--- a/mkdocktb
+++ b/mkdocktb
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/mkdocs b/mkdocs
index 545632e55..96f56ee27 100755
--- a/mkdocs
+++ b/mkdocs
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/mkpot b/mkpot
index 2f46cc1f4..33854a99d 100755
--- a/mkpot
+++ b/mkpot
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/mkrpm b/mkrpm
index 39e512198..4a6ba54c4 100755
--- a/mkrpm
+++ b/mkrpm
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/mktar b/mktar
index 596b59057..666d4ab52 100755
--- a/mktar
+++ b/mktar
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/mkzip b/mkzip
index e9a46cdd5..4e032e099 100755
--- a/mkzip
+++ b/mkzip
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/prologue.mk b/prologue.mk
index 4f54bcc9b..491b97469 100644
--- a/prologue.mk
+++ b/prologue.mk
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/prologue.sh b/prologue.sh
index b9223f0a5..6b8917d09 100644
--- a/prologue.sh
+++ b/prologue.sh
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/prologue.tcl b/prologue.tcl
index 76c9c7667..a27c76d6c 100644
--- a/prologue.tcl
+++ b/prologue.tcl
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/run-brltty b/run-brltty
index 88c34f6f5..5106f5d77 100755
--- a/run-brltty
+++ b/run-brltty
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/run-command b/run-command
index 856b63175..4fc744205 100755
--- a/run-command
+++ b/run-command
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/run-xbrlapi b/run-xbrlapi
index efb8ffcf7..2b703c674 100755
--- a/run-xbrlapi
+++ b/run-xbrlapi
@@ -3,7 +3,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/screen.mk b/screen.mk
index 67549334b..51beca228 100644
--- a/screen.mk
+++ b/screen.mk
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
diff --git a/speech.mk b/speech.mk
index f603a142f..3a739f0aa 100644
--- a/speech.mk
+++ b/speech.mk
@@ -2,7 +2,7 @@
 # BRLTTY - A background process providing access to the console screen (when in
 #          text mode) for a blind person using a refreshable braille display.
 #
-# Copyright (C) 1995-2024 by The BRLTTY Developers.
+# Copyright (C) 1995-2025 by The BRLTTY Developers.
 #
 # BRLTTY comes with ABSOLUTELY NO WARRANTY.
 #
