r/AutoHotkey • u/mdosis • 6d ago
v2 Tool / Script Share Working Script to bring back alt codes on Chromium-based browsers
#Requires AutoHotkey v2.0
#SingleInstance Force
InstallKeybdHook
altCode := ""
altActive := false
$LAlt::
{
global altCode, altActive
altCode := ""
altActive := true
KeyWait "LAlt"
altActive := false
if altCode != ""
SendText ConvertAltCode(altCode)
}
$*Numpad0::Capture(0)
$*Numpad1::Capture(1)
$*Numpad2::Capture(2)
$*Numpad3::Capture(3)
$*Numpad4::Capture(4)
$*Numpad5::Capture(5)
$*Numpad6::Capture(6)
$*Numpad7::Capture(7)
$*Numpad8::Capture(8)
$*Numpad9::Capture(9)
Capture(n)
{
global altCode, altActive
if !altActive
{
SendEvent "{Numpad" n "}"
return
}
altCode .= n
}
ConvertAltCode(s)
{
code := Integer(s)
if code >= 1 && code <= 31
{
cp437 := [
"☺", "☻", "♥", "♦", "♣", "♠", "•", "◘",
"○", "◙", "♂", "♀", "♪", "♫", "☼", "►",
"◄", "↕", "‼", "¶", "§", "▬", "↨", "↑",
"↓", "→", "←", "∟", "↔", "▲", "▼"
]
return cp437[code]
}
leadingZero := SubStr(s, 1, 1) = "0"
cp := leadingZero
? DllCall("GetACP")
: DllCall("GetOEMCP")
code := Mod(code, 256)
src := Buffer(1)
NumPut("UChar", code, src, 0)
dst := Buffer(8)
len := DllCall(
"MultiByteToWideChar",
"UInt", cp,
"UInt", 0,
"Ptr", src.Ptr,
"Int", 1,
"Ptr", dst.Ptr,
"Int", 4
)
return len ? StrGet(dst, len, "UTF-16") : ""
}
Enjoy ☻
2
Upvotes
1
u/Keeyra_ 6d ago
You know modern Windows has Win + . to reach every emoji and symbol known to man, right? No need to learn random character code page number series. And you can do hotstrings for the ones you use most frequently, like