Skip to content

Instantly share code, notes, and snippets.

View willwade's full-sized avatar
🌏
Working on dasher and a lot of Ace hardware projects

will wade willwade

🌏
Working on dasher and a lot of Ace hardware projects
View GitHub Profile
import sounddevice as sd
import time
import logging
import threading
import wave
from abc import ABC, abstractmethod
from typing import Any, List, Literal, Optional, Union, Dict, Callable
FileFormat = Union[Literal["wav"], Literal["mp3"]]
@willwade
willwade / macCapture.py
Last active April 28, 2024 17:10
capture keys - mac and Win code
from Quartz import *
from PyObjCTools.AppHelper import runConsoleEventLoop
def key_callback(proxy, type_, event, refcon):
# Get the key code
key_code = CGEventGetIntegerValueField(event, kCGKeyboardEventKeycode)
print("Key pressed:", key_code)
return event
def main():
import requests
# Azure subscription key and service region
subscription_key = 'YourAzureSubscriptionKey'
service_region = 'YourServiceRegion'
# Set up the TTS endpoint
tts_endpoint = f'https://{service_region}.tts.speech.microsoft.com/cognitiveservices/v1'
# Set up the headers for the HTTP request
@willwade
willwade / autocorrect.py
Last active February 2, 2024 07:57
AutoCorrect using OpenAI
from pynput import keyboard, mouse
from pynput.keyboard import Key, Controller as KeyboardController
import requests
import clipman
clipman.init()
keyboard_controller = KeyboardController()
text_buffer = []
def correct_text(text):
@willwade
willwade / reftab.swift
Last active November 3, 2023 06:50
RefTab API for Swift
import CryptoKit
import Foundation
struct EmptyResponse: Decodable {}
class ReftabClient {
let publicKey: String
let secretKey: String
let baseURL = "https://www.reftab.com/api"
@willwade
willwade / ppm-autocorrection.swift
Last active October 26, 2023 10:59
PPM in swift courtesy of GPT. Here The generateCandidates(word:) method generates candidate words by swapping adjacent characters. This is a very simplistic way to generate candidates; in a real-world application, you might use more sophisticated techniques like Damerau-Levenshtein distance. The autocorrect(word:context:topN:) method takes a mis…
/** So really you'd want to update that training text continually too - but you ideally need a way for people correcting this training text. Something that was easy enough with dasher although undcoumented. You literally edit the text file.
Also note this for autocorrection - but not sure how we would implement this
**/
extension PPM {
// Generate candidate words by swapping adjacent characters
func generateCandidates(word: String) -> [String] {
var candidates: [String] = []
var chars = Array(word)
for i in 0..<(chars.count - 1) {
@willwade
willwade / remap.py
Last active September 18, 2023 10:50
this takes the directory of xkb keyboard maps found in linux at /usr/share/X11/xkb/symbols - and converts them to a relaykeys format e.g. https://github.com/AceCentre/RelayKeys/blob/master/cli_keymaps/de_keymap.json
import os
import re
import json
import unicodedata
def xkb_to_unicode(key_code):
# Add your custom mapping here
custom_mapping = {
"adiaeresis": "ä",
"odiaeresis": "ö",
@willwade
willwade / requirements.txt
Last active July 5, 2023 15:47
MIgrating to https://github.com/AceCentre/TranslateAndTTS Copy pasteboard, translate the pasteboard to a predefined language, then speak it. Note settings in cfg file - Will allow you to replace pasteboard if you wish. NB: pyenv 3.10 - pip install -r requirements.txt build using pyinstaller. use --onefile --noconsole
pyperclip
pyttsx4
configparser
translate
TTS
pyaudio
gTTS
gspeak
pygame
from pynput.mouse import Controller
from pynput.keyboard import Listener, Key
import time
# Create an instance of the mouse controller
mouse = Controller()
# Set the initial position of the cursor
x, y = mouse.position
@willwade
willwade / DetectSounds.py
Last active March 29, 2023 15:35
Detect sounds to Keypress
import sounddevice as sd
import numpy as np
import librosa
import pynput.keyboard as keyboard
# Set the minimum and maximum frequencies for the "ahh" sound
min_freq = 500
max_freq = 2000
# Set the minimum and maximum frequencies for the "ssss" sound