Automatisations
Utilise des préréglages ou tes propres règles pour modifier le clavier pendant la saisie, sans remplacer tes réglages enregistrés.
Les règles d’état appliquent des réglages temporaires tant que leurs conditions sont remplies. Combine orientation, largeur de fenêtre, apparence, langue, disposition, propriétés du champ, heure ou état déclaré par un plugin. Choisis si toutes les conditions ou une seule doivent être remplies. Un contexte inconnu ne satisfait jamais une condition négative.
Les règles d’événement s’exécutent à l’ouverture du clavier, au changement de langue ou de propriété du champ, lorsqu’un plugin émet un événement ou quand tu touches un raccourci. Les commandes s’exécutent une fois par événement. Les réglages temporaires durent jusqu’à la fermeture du clavier, la modification de la règle ou l’effacement des modifications de session.
Tes réglages enregistrés restent la base
Les règles se superposent aux réglages actuellement enregistrés. Fais-les glisser pour changer leur priorité ; les dernières l’emportent. Désactiver une règle retire ses modifications. Les réglages que tu enregistres restent disponibles à la fin d’une modification temporaire. Une action de profil est temporaire : elle ne sélectionne ni ne réécrit ton profil enregistré.
Le préréglage compact utilise des rangées de touches de 28 points et 80% de la largeur enregistrée, dans les limites de taille existantes. Avec la séparation activée, les touches plus petites laissent davantage de place entre les deux moitiés et les gardent près des bords. Le mode à une main conserve son alignement. Les pourcentages partent toujours de la valeur enregistrée et ne se cumulent jamais.
L’aperçu utilise le contexte d’exemple que tu choisis. Il affiche les conditions remplies, les références invalides et les réglages attendus sans exécuter de commandes. L’aperçu de l’app est indépendant du clavier actif. Ajoute Automatisations à la barre supérieure pour y voir les modifications actives et lancer des règles par raccourci.
Quand un événement se produit
Quand un événement se produit
keyboard.openkeyboard.closekeyboard.languageChangedkeyboard.layoutChangedkeyboard.profileChangedkeyboard.planeChangedinput.changedtime.minuteuser.run
Actions
panel.closeplane.lettersplane.numbersplane.symbolsoverrides.clearpanel.emojipanel.calculatorpanel.conversionpanel.layoutspanel.profiles
L’évaluation a lieu quand le clavier est actif. Les règles horaires ne s’exécutent pas en arrière-plan et les événements de fermeture ne sont pas garantis. Clink ne peut ni identifier l’app hôte ni modifier les réglages d’iOS. Les règles conservent les exigences d’Abonnement, d’Accès complet et de toucher de l’utilisateur des fonctions utilisées. Importer n’accorde aucune autorisation.
Le contrat du plugin
L’objet automation facultatif d’un fichier .clinkplugin déclare événements, état, réglages, commandes, préréglages et emplacements de raccourcis. Chaque contribution possède un identifiant stable, une version de schéma exacte et des titres localisés. L’hôte crée les noms plugin/<plugin-id>/<kind>/<id>. Un plugin ne peut pas utiliser l’espace de noms du système ou d’un autre plugin.
L’état publié, les données d’événement et les arguments de commande acceptent des booléens, des nombres bornés et des choix déclarés. Les réglages acceptent aussi du texte de longueur limitée. L’état et les réglages utilisent des clés du dictionnaire d’état existant du plugin. Les valeurs temporaires sont rétablies avant l’enregistrement. Les préréglages sont des règles ordinaires désactivées, à sélectionner explicitement.
Plugins ›Hooks
| Hook | Quand il s’exécute |
|---|---|
on_automation(command, args, state) | on_automation(command, args, state) exécute une commande locale approuvée dans le bac à sable existant. Ce hook peut actualiser le texte de la barre d’espace, publier un état déclaré ou émettre un événement déclaré. Il ne peut pas insérer de texte, accéder au presse-papiers, modifier des réglages persistants ou envoyer des requêtes externes. |
automation_emit(name, payload) | Émettez un événement déclaré avec ses données typées. L’hôte ajoute l’espace de noms du plugin et les versions de schéma ; le script ne peut pas fournir un geste utilisateur ni les antécédents de la chaîne d’exécution. |
automation_publish(name, value) | Publiez une valeur d’état déclarée pour les conditions. Les valeurs disparaissent à la fin de la session du clavier ou lorsque le plugin devient indisponible. |
automation_run(slot) | Appelez cette fonction depuis le gestionnaire d’action d’un contrôle natif du plugin. L’utilisateur associe l’emplacement de raccourci déclaré à une règle dans Automatisations. Un plugin ne peut pas choisir la règle à son insu ni déclencher depuis un minuteur une commande nécessitant un toucher. |
Actions
space_textautomation_emitautomation_publish
Un événement déclaré et une commande sûre
Ce fragment de manifeste appartient au champ automation d’un fichier de plugin ordinaire. Son script publie l’état de préparation du clavier, émet un événement et actualise un texte. Dans l’éditeur, sélectionnez cet événement, exigez l’état ready et choisissez la commande caption. La lecture de cet exemple n’installe ni n’active aucun plugin.
{
"schemaVersion": 1,
"events": [
{
"id": "ready",
"title": {
"en": "Keyboard ready"
},
"version": 1,
"payload": [
{
"id": "ready",
"key": "ready",
"title": {
"en": "Ready"
},
"version": 1,
"type": "bool",
"choices": [],
"minimum": 0,
"maximum": 100,
"defaultValue": null
}
]
}
],
"state": [
{
"id": "ready",
"key": "ready",
"title": {
"en": "Ready"
},
"version": 1,
"type": "bool",
"choices": [],
"minimum": 0,
"maximum": 100,
"defaultValue": null
}
],
"settings": [
{
"id": "show_caption",
"key": "show_caption",
"title": {
"en": "Show caption"
},
"version": 1,
"type": "bool",
"choices": [],
"minimum": 0,
"maximum": 100,
"defaultValue": true
}
],
"commands": [
{
"id": "caption",
"title": {
"en": "Refresh caption"
},
"version": 1,
"arguments": [],
"behavior": "localUI",
"requiresUserGesture": false,
"requiresFullAccess": false
}
],
"presets": [],
"shortcuts": [
"run"
]
}def initial():
return {"ready": False, "show_caption": True}
def on_open(state):
state["ready"] = True
automation_publish("ready", True)
automation_emit("ready", {"ready": True})
return state
def on_automation(command, args, state):
if command == "caption":
space_text("Clink" if state["show_caption"] else None)
return state
def bar_items(state):
return [bar_button("run", "Run automation", icon="bolt.circle")]
def on_action(action, value, state):
if action == "run":
automation_run("run")
return stateSchéma et limites
La version 1 accepte 128 règles, 24 conditions et 32 actions par règle, avec des imports de 1 048 576 octets au maximum. Le registre des réglages expose 268 cibles et documente 39 exclusions. Un lot de réglages invalide est rejeté dans son ensemble ; les commandes s’arrêtent au premier échec sans promettre d’annuler les effets précédents.
Les contributions supprimées, désactivées ou incompatibles d’un plugin rendent les règles dépendantes indisponibles. Un plantage ou un délai dépassé désactive la contribution concernée pour la session. Les commandes disposent de 20 000 étapes et d’un court délai d’exécution. Files bornées, délais entre exécutions, limites de chaîne et stabilisation de l’état empêchent les événements répétés de s’exécuter indéfiniment.
Widgets
Clink propose trois widgets d'écran d'accueil et une Live Activity : un sélecteur de profils, vos statistiques de frappe, la dictée rapide et la session de dictée elle-même.
Les widgets lisent directement le fichier de réglages partagé : ils continuent donc de fonctionner app fermée.
App Intents
Deux intents sont livrés aujourd'hui, et aucun n'ouvre l'app. Switch Keyboard Profile réécrit les réglages partagés depuis le widget, et un clavier déjà à l'écran reprend le changement aussitôt. End Dictation atteint la session du micro depuis la Live Activity, en lançant l'app en arrière-plan si nécessaire.
Passer à un profil que vous avez créé demande un Abonnement, et cette vérification a lieu aussi dans le widget. Les profils livrés avec Clink sont gratuits.
Clink ne définit aucune phrase Raccourcis qui lui soit propre : il n'y a donc rien à dire à voix haute.
Liens
Clink répond à son propre schéma d'URL clink. Un lien ouvre l'app sur la page que vous nommez, ou déclenche l'une des routes réservées.
| Lien | Ce qu’il fait |
|---|---|
clink://settings/<page> | Ouvre une page de réglages. Ajoutez ?anchor=<id> pour tomber sur une ligne. |
clink://<page> | La même page, en plus court. |
clink://search?q=<text> | Ouvre la recherche, requête déjà remplie. |
clink://analytics | Ouvre les statistiques de frappe. |
clink://dictation/start | Démarre une session de dictée. |
clink://dictation/stop | Termine la session et retire la Live Activity. |
clink://paywall | Ouvre l'abonnement. |
clink://verify | Revérifie votre abonnement, quand un droit est devenu obsolète. |
Dictée, abonnement et vérification sont réservés : ils ne peuvent pas servir de noms de page.
Ouvrir des fichiers
Clink déclare ses types de fichier à iOS : Fichiers, AirDrop, Messages et n'importe quelle feuille de partage proposent donc de les ouvrir dans Clink.