aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorverdant <i@glowisle.me>2026-02-10 16:26:42 +0800
committerverdant <i@glowisle.me>2026-02-10 16:26:42 +0800
commit207e8a92d0fcda7077649b78211b41c73760770f (patch)
treec28c9ddaf35ac4d3937269567a35b58cbf3cd7b2
downloadlazy-numbers-207e8a92d0fcda7077649b78211b41c73760770f.tar.gz
lazy-numbers-207e8a92d0fcda7077649b78211b41c73760770f.zip
Initial commit
-rw-r--r--README.md48
-rw-r--r--lazy-numbers.el47
-rw-r--r--screenshot/example.gifbin0 -> 562216 bytes
-rw-r--r--screenshot/opinion.pngbin0 -> 31530 bytes
4 files changed, 95 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..344b4e0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,48 @@
+# Lazy Numbers
+
+<div style="text-align=center">
+<img src="./screenshot/opinion.png">
+</div>
+
+Enter Numbers without moving your hands off the home row!!!
+
+![](./screenshot/example.gif)
+
+## Install
+
+### MELPA:
+
+```
+M-x package-install lazy-numbers
+```
+
+## use-package
+
+```elisp
+(use-package lazy-numebrs
+ :ensure t)
+```
+
+### Manual installation
+
+```elisp
+(add-to-list 'load-path "/path/to/lazy-numbers/")
+(require 'lazy-numbers)
+
+(global-set-key (kbd "C-'") #'lazy-number-enter)
+```
+
+### Usage
+
+Press `C-'` to enter **home-row number input mode**, then use
+
+```
+a s d f g h j k l ;
+1 2 3 4 5 6 7 8 9 0
+```
+
+Press `ESC` to exit.
+
+
+## About
+
diff --git a/lazy-numbers.el b/lazy-numbers.el
new file mode 100644
index 0000000..a14e2e9
--- /dev/null
+++ b/lazy-numbers.el
@@ -0,0 +1,47 @@
+;;; lazy-numbers.el --- Enter numbers without moving your hands off the home row -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2026 Verdant
+
+;; Author: Verdant <verdant.im@outlook.com>
+;; Version: 0.1
+;; Package-Requires: ((emacs "27.1"))
+;; Keywords: convenience, tools, lazy
+;; URL: https://github.com/yingyu5658/lazy-numbers.el
+
+;;; Commentary:
+;; Use `C-'` and home row keys to enter numbers
+;;; Code:
+
+(defvar lazy-number-transient-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map (kbd "a") (lambda () (interactive) (insert "1") (forward-char 1)))
+ (define-key map (kbd "s") (lambda () (interactive) (insert "2") (forward-char 1)))
+ (define-key map (kbd "d") (lambda () (interactive) (insert "3") (forward-char 1)))
+ (define-key map (kbd "f") (lambda () (interactive) (insert "4") (forward-char 1)))
+ (define-key map (kbd "g") (lambda () (interactive) (insert "5") (forward-char 1)))
+ (define-key map (kbd "h") (lambda () (interactive) (insert "6") (forward-char 1)))
+ (define-key map (kbd "j") (lambda () (interactive) (insert "7") (forward-char 1)))
+ (define-key map (kbd "k") (lambda () (interactive) (insert "8") (forward-char 1)))
+ (define-key map (kbd "l") (lambda () (interactive) (insert "9") (forward-char 1)))
+ (define-key map (kbd ";") (lambda () (interactive) (insert "0") (forward-char 1)))
+
+ ;; exit
+ (define-key map (kbd "ESC") #'keyboard-quit)
+ map)
+ "Key map for SPC number input.")
+
+(defun lazy-number-enter ()
+ "Enter transient number input mode."
+ (interactive)
+ (set-transient-map lazy-number-transient-map t))
+
+(global-set-key (kbd "C-'") #'lazy-number-enter)
+
+(defvar lazy-number-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map (kbd "C-'") #'lazy-number-enter)
+ map))
+
+(provide 'lazy-numbers)
+
+;;; lazy-number.el ends here
diff --git a/screenshot/example.gif b/screenshot/example.gif
new file mode 100644
index 0000000..f4904f2
--- /dev/null
+++ b/screenshot/example.gif
Binary files differ
diff --git a/screenshot/opinion.png b/screenshot/opinion.png
new file mode 100644
index 0000000..d3e942c
--- /dev/null
+++ b/screenshot/opinion.png
Binary files differ