Compare commits
3 Commits
4fe656243c
...
68ed405a24
Author | SHA1 | Date | |
---|---|---|---|
68ed405a24 | |||
1880c24836 | |||
6230ab4ea2 |
@ -30,7 +30,7 @@ params:
|
|||||||
favicon: "./favicon.ico"
|
favicon: "./favicon.ico"
|
||||||
touchicon: "./touch-icon.png"
|
touchicon: "./touch-icon.png"
|
||||||
# Dark code highlighting
|
# Dark code highlighting
|
||||||
codeblocksdark: false
|
codeblocksdark: true
|
||||||
# Customize the indicator for margin notes
|
# Customize the indicator for margin notes
|
||||||
# Some suggestions: ⊕, 💬, 💭, 📑, 🏷, ✍, 💡, 🧐, 📎, 📌
|
# Some suggestions: ⊕, 💬, 💭, 📑, 🏷, ✍, 💡, 🧐, 📎, 📌
|
||||||
marginNoteInd: "⊕"
|
marginNoteInd: "⊕"
|
||||||
|
129
blog/content/inlägg/autohotkey.md
Normal file
129
blog/content/inlägg/autohotkey.md
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
---
|
||||||
|
title: 'Förkortningar överallt - AutoHotkey'
|
||||||
|
date: 2025-03-27T17:54:43+01:00
|
||||||
|
draft: false
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Jag har under åren testat lite olika program för att kunna skriva med förkortningar överallt. Jag tröttnade ganska snabbt på gränsnittet för att skapa och hantera listor i [PhraseExpress](https://www.phraseexpress.com/). Och även om textfilsformatet i [Espanso](https://espanso.org) till en början kändes jättesmidigt, så känns det som att programmets default-funktionalitet står ivägen när jag försöker texta något.
|
||||||
|
|
||||||
|
Det jag vill ha av ett sånt här verktyg är dessa funktioner:
|
||||||
|
- Enkelt textformat för att skapa och hantera förkortningar och listor
|
||||||
|
- Tab skippar förkortningar
|
||||||
|
- Alla vanliga skiljetecken slår ut förkortningar
|
||||||
|
- Förkortningar ska fungera med små bokstäver och med stor initialbokstav
|
||||||
|
- vkm -> välkommen
|
||||||
|
- Vkm -> Välkommen
|
||||||
|
- Verktyget ska göra textutbytet snabbt
|
||||||
|
- Samtliga av dessa lösningar infogar simulerade knapptryckningar för att först ta bort ordet med backspace och skriver sen ut hela det nya ordet.
|
||||||
|
|
||||||
|
Enligt lite övertalning kollade jag upp [AutoHotkey](https://www.autohotkey.com/) (AHK), ett program jag är väl bekant med sen innan, för att det går att använda för att automatisera typ vad som helst. {{<marginnote>}}När det gäller import/export av förkortnings-listor i PhraseExpress så finns ingen funktion i själva programmet.<br />Istället tipsar forumen om att använda ett AutoHotkey-skript för att automtaisera det...{{</marginnote>}} Jag vet t.ex. att folk gjorde fusk till datorspel med hjälp av AHK när jag var tonåring, för att göra omänskligt snabba och/eller noggranna manövrar med en knapptryckning.
|
||||||
|
Jag hade dock missat hur otroligt lätt det är att konfigurera för att skriva med förkortningar på ett sätt jag gillar.
|
||||||
|
|
||||||
|
I grunden bygger förkortningsfunktionen på någon som heter "hotstrings". Den kan fånga ett inmatat textmönster och sen utföra en manöver som respons. Hotstrings går att trigga med olika kommandon eller som respons på specifika tangentnedslag. Det ställer jag in med kommandot `#HotString EndChars` nedan.
|
||||||
|
|
||||||
|
Jag skapar också kommandon för att byta mellan min svenska- och engelska-lista med <kbd>CTRL+1</kbd> respektive <kbd>CTRL+2</kbd>. En notifikationsruta visar att jag byter lista. Vill jag se vilken lista jag är i kan jag skriva förkortningen "langgg" så löser den ut till antineng "sv" eller "en".
|
||||||
|
|
||||||
|
Då jag vill kunna skippa förkortningar så har jag lagt till den funktionen på <kbd>Tab</kbd>. Den infogar istället ett vanligt mellanslag.
|
||||||
|
|
||||||
|
Här kan du [ladda ner en zip](/Abbreviator_0.1.zip) med mina AutoHotkey-filer inklusive förkortningar. Du behöver ladda ner och installera AutoHotkey i sig för att kunna öppna och använda filerna.
|
||||||
|
|
||||||
|
Nedan följer en genomgång av hur skriptet fungerar.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
```
|
||||||
|
;; inställningar för att sätta upp skriptet korrekt
|
||||||
|
#NoEnv
|
||||||
|
SendMode Input
|
||||||
|
SetWorkingDir %A_ScriptDir%
|
||||||
|
#SingleInstance Force
|
||||||
|
#WinActivateForce
|
||||||
|
SetBatchLines -1
|
||||||
|
|
||||||
|
|
||||||
|
;; löser ut förkortningar med alla vettiga skiljetecken
|
||||||
|
;; inklusive vid ny rad, och det gör den innan blocket skickas iväg
|
||||||
|
;; om man skriver undertexter
|
||||||
|
#Hotstring EndChars -()[]{}:;'"/\,.?!`n `
|
||||||
|
|
||||||
|
;; förvalt språk är engelska
|
||||||
|
Language := "en"
|
||||||
|
|
||||||
|
|
||||||
|
;; byt förkortningslista till svenska med ctrl+1
|
||||||
|
;; kan vara bråkigt med flera flikar i webbläsaren
|
||||||
|
;; skapar en notifikationsruta som indikerar bytet
|
||||||
|
^1::
|
||||||
|
Language = sv
|
||||||
|
TrayTip #1, "Byter till svenska"
|
||||||
|
Sleep 1250
|
||||||
|
HideTrayTip()
|
||||||
|
Return
|
||||||
|
|
||||||
|
;; byt förkortningslista till engelska med ctrl+2
|
||||||
|
^2::
|
||||||
|
Language = en
|
||||||
|
TrayTip #2, "Byter till engelska"
|
||||||
|
Sleep 1250
|
||||||
|
HideTrayTip()
|
||||||
|
Return
|
||||||
|
|
||||||
|
;; tryck tab för att sänd ett mellanslag utan att lösa ut förkortning
|
||||||
|
tab::
|
||||||
|
SendInput {Space}
|
||||||
|
Return
|
||||||
|
|
||||||
|
;; förkortningen "langgg" skriver ut vilken förkortningslista
|
||||||
|
;; man är i som om det var en vanlig förkortning
|
||||||
|
::langgg::
|
||||||
|
Send % Language
|
||||||
|
Send {Space}
|
||||||
|
Return
|
||||||
|
|
||||||
|
;; här börjar engelska-listan i formatet ::förk::förkortning
|
||||||
|
#If Language == "en"
|
||||||
|
::abb::abbreviation
|
||||||
|
::abbs::abbreviations
|
||||||
|
|
||||||
|
;; men vi importerar den från en separat fil i samma mapp
|
||||||
|
;; då den innehåller över 10 000 förkortningar
|
||||||
|
;; i den filen jag vill importa räcker det med att jag
|
||||||
|
;; skriver enligt ::abb::abbreviation-formatet ovan
|
||||||
|
#Include Abbreviator_list_eng.ahk
|
||||||
|
|
||||||
|
;; här börjar svenska-listan i formatet ::förk::förkortning
|
||||||
|
#If Language == "sv"
|
||||||
|
::ahkk::AutoHotkey
|
||||||
|
::qws::Qwertyist Tangentbordsservice
|
||||||
|
;;men jag gör samma med svenskalistan och importerar den
|
||||||
|
#Include Abbreviator_list_sv.ahk
|
||||||
|
|
||||||
|
;; En hjälpfunktion för att stänga notifikationsrutan
|
||||||
|
HideTrayTip() {
|
||||||
|
TrayTip
|
||||||
|
if SubStr(A_OSVersion,1,3) = "10." {
|
||||||
|
Menu Tray, NoIcon
|
||||||
|
Sleep 200
|
||||||
|
Menu Tray, Icon
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Appendix: Espanso
|
||||||
|
|
||||||
|
Här följer instruktioner för hur jag fick Espanso att fungera iallafall hyfsat.
|
||||||
|
|
||||||
|
Ändra `default.config` så att backspace beter sig som vanligt
|
||||||
|
```
|
||||||
|
undo_backspace: false
|
||||||
|
```
|
||||||
|
|
||||||
|
För att lösa ut förkortningar oavsett stor eller liten bokstav så behöver varje ersättningsrad följa det här mönstret. Förkortningen går in mellan `\b` och `(?`. Det är dock sådär kul att ALLA förkortningar behöver se ut såhär. Det gör det väldigt oöverskådligt om inte annat. Sen kan jag tänka mig att en regex-trigger är lite långsammare än en vanlig trigger, men jag nog egentligen testar för lite för att kunna uttrycka mig säkert om det.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- regex: (?i)\bex(?P<w>\W)
|
||||||
|
replace: exempel{{w}}
|
||||||
|
```
|
7
blog/content/inlägg/statistik.md
Normal file
7
blog/content/inlägg/statistik.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
title: 'Statistik'
|
||||||
|
date: 2025-02-24T14:23:17+01:00
|
||||||
|
draft: true
|
||||||
|
---
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
BIN
blog/static/images/autohotkey.gif
Executable file
BIN
blog/static/images/autohotkey.gif
Executable file
Binary file not shown.
After Width: | Height: | Size: 116 KiB |
BIN
blog/static/images/statistik.png
Executable file
BIN
blog/static/images/statistik.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 122 KiB |
Loading…
x
Reference in New Issue
Block a user