Dynamic key remapper for Wayland Window System, especially for Sway

Overview

test PyPI version

wayremap

Dynamic keyboard remapper for Wayland.

It works on both X Window Manager and Wayland, but focused on Wayland as it intercepts evdev input and require root permission.

Motivation

Wayland and Sway is awesome. It brings lots of benefit to Linux desktop environment.

When I was using X desktop envionment, there is an awesome tool called xremap which remap keys based on current focused application.

https://github.com/k0kubun/xremap

I was looking for something similar to xremap for Wayland, but not found, so I decided to create on my own.

Install

sudo pip install wayremap

Run

For Wayland security model, we have to do execute key remapping as root.

Simply write your own service and run it as python script:

 # /opt/wayremap.py

from wayremap.config import WayremapConfig, Binding
from wayremap.main import run
import uinput as k

wayremap_config = WayremapConfig(
    # Filter applications which remap will be applied
    applications=[
        'Chromium',
        'Brave-browser',
        'Leafpad',
        'firefoxdeveloperedition',
    ],
    bindings=[
        # Emacs-like key binding
        Binding('ctrl.alt.a', [[k.KEY_LEFTCTRL, k.KEY_HOME]]),
        Binding('ctrl.alt.e', [[k.KEY_LEFTCTRL, k.KEY_END]]),
        Binding('ctrl.alt.h', [[k.KEY_LEFTCTRL, k.KEY_BACKSPACE]]),
        Binding('ctrl.f', [[k.KEY_RIGHT]]),
        Binding('ctrl.b', [[k.KEY_LEFT]]),
        Binding('ctrl.p', [[k.KEY_UP]]),
        Binding('ctrl.n', [[k.KEY_DOWN]]),
        Binding('ctrl.k',
                [[k.KEY_LEFTSHIFT, k.KEY_END], [k.KEY_LEFTCTRL, k.KEY_X]]),
        Binding('ctrl.a', [[k.KEY_HOME]]),
        Binding('ctrl.e', [[k.KEY_END]]),
        Binding('ctrl.y', [[k.KEY_LEFTCTRL, k.KEY_V]]),
        Binding('alt.f', [[k.KEY_LEFTCTRL, k.KEY_RIGHT]]),
        Binding('alt.b', [[k.KEY_LEFTCTRL, k.KEY_LEFT]]),
        Binding('alt.d', [[k.KEY_LEFTCTRL, k.KEY_DELETE]]),
        Binding('ctrl.h', [[k.KEY_BACKSPACE]]),
        Binding('ctrl.s', [[k.KEY_LEFTCTRL, k.KEY_F]]),

        # OSX-like key binding
        Binding('alt.a', [[k.KEY_LEFTCTRL, k.KEY_A]]),
        Binding('alt.c', [[k.KEY_LEFTCTRL, k.KEY_C]]),
        Binding('alt.v', [[k.KEY_LEFTCTRL, k.KEY_V]]),
        Binding('alt.x', [[k.KEY_LEFTCTRL, k.KEY_X]]),

        # Slack helm!
        Binding('alt.x', [[k.KEY_LEFTCTRL, k.KEY_K]]),
    ])

run(wayremap_config, '/dev/input/event4')

And then

sudo modprobe uinput
sudo python /opt/wayremap.py

Note that '/dev/input/event4' varies among system.

Known bugs

  • 3 is pressed when changing focused window
  • Key repeating become slow while switching focused windowd

Roadmap

  • Enable to run wihtout Sway
  • Packaging for Arch Linux, Debian, Fedora, etc.
  • Enable to load per-application config.
  • Re-write in Rust for better performance.
Comments
  • PgUp, PgDn, + specific keyboard

    PgUp, PgDn, + specific keyboard

    Yank from reddit:

    Ooh nice. I have a usecase. Could you tell me if that would be supported?

    On my laptop keyboard PageUp and PageDown are smooshed to the arrow keys, and I keep hitting them by mistake. I would like to disable them in the terminal (mostly happens using a shell or vim).

    Perhaps remap them to [Win]+[PageDown] in case I need them anyway. BUT I do not want to disable them on my external keyboard (or alternatively when an external keyboard is connected.)

    So I would line to disable some keys on a specific input device and enable keys with modifiers (shift, win, etc)

    opened by yschaeff 6
  • support USB device

    support USB device

    • support specifying device by name
      • /dev/eventXXX can be changed if the USB device is detached/attached
    • support running multiple mappings for keyboards
    opened by acro5piano 1
  • Support remapping all keys, in addition to alphabet keys

    Support remapping all keys, in addition to alphabet keys

    All evdev keys are the following:

    KEY_0
    KEY_1
    KEY_102ND
    KEY_10CHANNELSDOWN
    KEY_10CHANNELSUP
    KEY_2
    KEY_3
    KEY_3D_MODE
    KEY_4
    KEY_5
    KEY_6
    KEY_7
    KEY_8
    KEY_9
    KEY_A
    KEY_AB
    KEY_ADDRESSBOOK
    KEY_AGAIN
    KEY_ALS_TOGGLE
    KEY_ALTERASE
    KEY_ANGLE
    KEY_APOSTROPHE
    KEY_APPSELECT
    KEY_ARCHIVE
    KEY_ASPECT_RATIO
    KEY_ASSISTANT
    KEY_ATTENDANT_OFF
    KEY_ATTENDANT_ON
    KEY_ATTENDANT_TOGGLE
    KEY_AUDIO
    KEY_AUDIO_DESC
    KEY_AUX
    KEY_B
    KEY_BACK
    KEY_BACKSLASH
    KEY_BACKSPACE
    KEY_BASSBOOST
    KEY_BATTERY
    KEY_BLUE
    KEY_BLUETOOTH
    KEY_BOOKMARKS
    KEY_BREAK
    KEY_BRIGHTNESSDOWN
    KEY_BRIGHTNESSUP
    KEY_BRIGHTNESS_AUTO
    KEY_BRIGHTNESS_CYCLE
    KEY_BRIGHTNESS_MAX
    KEY_BRIGHTNESS_MIN
    KEY_BRIGHTNESS_TOGGLE
    KEY_BRIGHTNESS_ZERO
    KEY_BRL_DOT1
    KEY_BRL_DOT10
    KEY_BRL_DOT2
    KEY_BRL_DOT3
    KEY_BRL_DOT4
    KEY_BRL_DOT5
    KEY_BRL_DOT6
    KEY_BRL_DOT7
    KEY_BRL_DOT8
    KEY_BRL_DOT9
    KEY_BUTTONCONFIG
    KEY_C
    KEY_CALC
    KEY_CALENDAR
    KEY_CAMERA
    KEY_CAMERA_DOWN
    KEY_CAMERA_FOCUS
    KEY_CAMERA_LEFT
    KEY_CAMERA_RIGHT
    KEY_CAMERA_UP
    KEY_CAMERA_ZOOMIN
    KEY_CAMERA_ZOOMOUT
    KEY_CANCEL
    KEY_CAPSLOCK
    KEY_CD
    KEY_CHANNEL
    KEY_CHANNELDOWN
    KEY_CHANNELUP
    KEY_CHAT
    KEY_CLEAR
    KEY_CLOSE
    KEY_CLOSECD
    KEY_CNT
    KEY_COFFEE
    KEY_COMMA
    KEY_COMPOSE
    KEY_COMPUTER
    KEY_CONFIG
    KEY_CONNECT
    KEY_CONTEXT_MENU
    KEY_CONTROLPANEL
    KEY_COPY
    KEY_CUT
    KEY_CYCLEWINDOWS
    KEY_D
    KEY_DASHBOARD
    KEY_DATA
    KEY_DATABASE
    KEY_DELETE
    KEY_DELETEFILE
    KEY_DEL_EOL
    KEY_DEL_EOS
    KEY_DEL_LINE
    KEY_DIGITS
    KEY_DIRECTION
    KEY_DIRECTORY
    KEY_DISPLAYTOGGLE
    KEY_DISPLAY_OFF
    KEY_DOCUMENTS
    KEY_DOLLAR
    KEY_DOT
    KEY_DOWN
    KEY_DVD
    KEY_E
    KEY_EDIT
    KEY_EDITOR
    KEY_EJECTCD
    KEY_EJECTCLOSECD
    KEY_EMAIL
    KEY_END
    KEY_ENTER
    KEY_EPG
    KEY_EQUAL
    KEY_ESC
    KEY_EURO
    KEY_EXIT
    KEY_F
    KEY_F1
    KEY_F10
    KEY_F11
    KEY_F12
    KEY_F13
    KEY_F14
    KEY_F15
    KEY_F16
    KEY_F17
    KEY_F18
    KEY_F19
    KEY_F2
    KEY_F20
    KEY_F21
    KEY_F22
    KEY_F23
    KEY_F24
    KEY_F3
    KEY_F4
    KEY_F5
    KEY_F6
    KEY_F7
    KEY_F8
    KEY_F9
    KEY_FASTFORWARD
    KEY_FASTREVERSE
    KEY_FAVORITES
    KEY_FILE
    KEY_FINANCE
    KEY_FIND
    KEY_FIRST
    KEY_FN
    KEY_FN_1
    KEY_FN_2
    KEY_FN_B
    KEY_FN_D
    KEY_FN_E
    KEY_FN_ESC
    KEY_FN_F
    KEY_FN_F1
    KEY_FN_F10
    KEY_FN_F11
    KEY_FN_F12
    KEY_FN_F2
    KEY_FN_F3
    KEY_FN_F4
    KEY_FN_F5
    KEY_FN_F6
    KEY_FN_F7
    KEY_FN_F8
    KEY_FN_F9
    KEY_FN_RIGHT_SHIFT
    KEY_FN_S
    KEY_FORWARD
    KEY_FORWARDMAIL
    KEY_FRAMEBACK
    KEY_FRAMEFORWARD
    KEY_FRONT
    KEY_FULL_SCREEN
    KEY_G
    KEY_GAMES
    KEY_GOTO
    KEY_GRAPHICSEDITOR
    KEY_GRAVE
    KEY_GREEN
    KEY_H
    KEY_HANGEUL
    KEY_HANGUEL
    KEY_HANGUP_PHONE
    KEY_HANJA
    KEY_HELP
    KEY_HENKAN
    KEY_HIRAGANA
    KEY_HOME
    KEY_HOMEPAGE
    KEY_HP
    KEY_I
    KEY_IMAGES
    KEY_INFO
    KEY_INSERT
    KEY_INS_LINE
    KEY_ISO
    KEY_J
    KEY_JOURNAL
    KEY_K
    KEY_KATAKANA
    KEY_KATAKANAHIRAGANA
    KEY_KBDILLUMDOWN
    KEY_KBDILLUMTOGGLE
    KEY_KBDILLUMUP
    KEY_KBDINPUTASSIST_ACCEPT
    KEY_KBDINPUTASSIST_CANCEL
    KEY_KBDINPUTASSIST_NEXT
    KEY_KBDINPUTASSIST_NEXTGROUP
    KEY_KBDINPUTASSIST_PREV
    KEY_KBDINPUTASSIST_PREVGROUP
    KEY_KBD_LAYOUT_NEXT
    KEY_KBD_LCD_MENU1
    KEY_KBD_LCD_MENU2
    KEY_KBD_LCD_MENU3
    KEY_KBD_LCD_MENU4
    KEY_KBD_LCD_MENU5
    KEY_KEYBOARD
    KEY_KP0
    KEY_KP1
    KEY_KP2
    KEY_KP3
    KEY_KP4
    KEY_KP5
    KEY_KP6
    KEY_KP7
    KEY_KP8
    KEY_KP9
    KEY_KPASTERISK
    KEY_KPCOMMA
    KEY_KPDOT
    KEY_KPENTER
    KEY_KPEQUAL
    KEY_KPJPCOMMA
    KEY_KPLEFTPAREN
    KEY_KPMINUS
    KEY_KPPLUS
    KEY_KPPLUSMINUS
    KEY_KPRIGHTPAREN
    KEY_KPSLASH
    KEY_L
    KEY_LANGUAGE
    KEY_LAST
    KEY_LEFT
    KEY_LEFTALT
    KEY_LEFTBRACE
    KEY_LEFTCTRL
    KEY_LEFTMETA
    KEY_LEFTSHIFT
    KEY_LEFT_DOWN
    KEY_LEFT_UP
    KEY_LIGHTS_TOGGLE
    KEY_LINEFEED
    KEY_LIST
    KEY_LOGOFF
    KEY_M
    KEY_MACRO
    KEY_MACRO1
    KEY_MACRO10
    KEY_MACRO11
    KEY_MACRO12
    KEY_MACRO13
    KEY_MACRO14
    KEY_MACRO15
    KEY_MACRO16
    KEY_MACRO17
    KEY_MACRO18
    KEY_MACRO19
    KEY_MACRO2
    KEY_MACRO20
    KEY_MACRO21
    KEY_MACRO22
    KEY_MACRO23
    KEY_MACRO24
    KEY_MACRO25
    KEY_MACRO26
    KEY_MACRO27
    KEY_MACRO28
    KEY_MACRO29
    KEY_MACRO3
    KEY_MACRO30
    KEY_MACRO4
    KEY_MACRO5
    KEY_MACRO6
    KEY_MACRO7
    KEY_MACRO8
    KEY_MACRO9
    KEY_MACRO_PRESET1
    KEY_MACRO_PRESET2
    KEY_MACRO_PRESET3
    KEY_MACRO_PRESET_CYCLE
    KEY_MACRO_RECORD_START
    KEY_MACRO_RECORD_STOP
    KEY_MAIL
    KEY_MAX
    KEY_MEDIA
    KEY_MEDIA_REPEAT
    KEY_MEDIA_TOP_MENU
    KEY_MEMO
    KEY_MENU
    KEY_MESSENGER
    KEY_MHP
    KEY_MICMUTE
    KEY_MINUS
    KEY_MIN_INTERESTING
    KEY_MODE
    KEY_MOVE
    KEY_MP3
    KEY_MSDOS
    KEY_MUHENKAN
    KEY_MUTE
    KEY_N
    KEY_NEW
    KEY_NEWS
    KEY_NEXT
    KEY_NEXTSONG
    KEY_NEXT_FAVORITE
    KEY_NOTIFICATION_CENTER
    KEY_NUMERIC_0
    KEY_NUMERIC_1
    KEY_NUMERIC_11
    KEY_NUMERIC_12
    KEY_NUMERIC_2
    KEY_NUMERIC_3
    KEY_NUMERIC_4
    KEY_NUMERIC_5
    KEY_NUMERIC_6
    KEY_NUMERIC_7
    KEY_NUMERIC_8
    KEY_NUMERIC_9
    KEY_NUMERIC_A
    KEY_NUMERIC_B
    KEY_NUMERIC_C
    KEY_NUMERIC_D
    KEY_NUMERIC_POUND
    KEY_NUMERIC_STAR
    KEY_NUMLOCK
    KEY_O
    KEY_OK
    KEY_ONSCREEN_KEYBOARD
    KEY_OPEN
    KEY_OPTION
    KEY_P
    KEY_PAGEDOWN
    KEY_PAGEUP
    KEY_PASTE
    KEY_PAUSE
    KEY_PAUSECD
    KEY_PAUSE_RECORD
    KEY_PC
    KEY_PHONE
    KEY_PICKUP_PHONE
    KEY_PLAY
    KEY_PLAYCD
    KEY_PLAYER
    KEY_PLAYPAUSE
    KEY_POWER
    KEY_POWER2
    KEY_PRESENTATION
    KEY_PREVIOUS
    KEY_PREVIOUSSONG
    KEY_PRINT
    KEY_PRIVACY_SCREEN_TOGGLE
    KEY_PROG1
    KEY_PROG2
    KEY_PROG3
    KEY_PROG4
    KEY_PROGRAM
    KEY_PROPS
    KEY_PVR
    KEY_Q
    KEY_QUESTION
    KEY_R
    KEY_RADIO
    KEY_RECORD
    KEY_RED
    KEY_REDO
    KEY_REFRESH
    KEY_REPLY
    KEY_RESERVED
    KEY_RESTART
    KEY_REWIND
    KEY_RFKILL
    KEY_RIGHT
    KEY_RIGHTALT
    KEY_RIGHTBRACE
    KEY_RIGHTCTRL
    KEY_RIGHTMETA
    KEY_RIGHTSHIFT
    KEY_RIGHT_DOWN
    KEY_RIGHT_UP
    KEY_RO
    KEY_ROOT_MENU
    KEY_ROTATE_DISPLAY
    KEY_ROTATE_LOCK_TOGGLE
    KEY_S
    KEY_SAT
    KEY_SAT2
    KEY_SAVE
    KEY_SCALE
    KEY_SCREEN
    KEY_SCREENLOCK
    KEY_SCREENSAVER
    KEY_SCROLLDOWN
    KEY_SCROLLLOCK
    KEY_SCROLLUP
    KEY_SEARCH
    KEY_SELECT
    KEY_SELECTIVE_SCREENSHOT
    KEY_SEMICOLON
    KEY_SEND
    KEY_SENDFILE
    KEY_SETUP
    KEY_SHOP
    KEY_SHUFFLE
    KEY_SLASH
    KEY_SLEEP
    KEY_SLOW
    KEY_SLOWREVERSE
    KEY_SOUND
    KEY_SPACE
    KEY_SPELLCHECK
    KEY_SPORT
    KEY_SPREADSHEET
    KEY_STOP
    KEY_STOPCD
    KEY_STOP_RECORD
    KEY_SUBTITLE
    KEY_SUSPEND
    KEY_SWITCHVIDEOMODE
    KEY_SYSRQ
    KEY_T
    KEY_TAB
    KEY_TAPE
    KEY_TASKMANAGER
    KEY_TEEN
    KEY_TEXT
    KEY_TIME
    KEY_TITLE
    KEY_TOUCHPAD_OFF
    KEY_TOUCHPAD_ON
    KEY_TOUCHPAD_TOGGLE
    KEY_TUNER
    KEY_TV
    KEY_TV2
    KEY_TWEN
    KEY_U
    KEY_UNDO
    KEY_UNKNOWN
    KEY_UNMUTE
    KEY_UP
    KEY_UWB
    KEY_V
    KEY_VCR
    KEY_VCR2
    KEY_VENDOR
    KEY_VIDEO
    KEY_VIDEOPHONE
    KEY_VIDEO_NEXT
    KEY_VIDEO_PREV
    KEY_VOD
    KEY_VOICECOMMAND
    KEY_VOICEMAIL
    KEY_VOLUMEDOWN
    KEY_VOLUMEUP
    KEY_W
    KEY_WAKEUP
    KEY_WIMAX
    KEY_WLAN
    KEY_WORDPROCESSOR
    KEY_WPS_BUTTON
    KEY_WWAN
    KEY_WWW
    KEY_X
    KEY_XFER
    KEY_Y
    KEY_YELLOW
    KEY_YEN
    KEY_Z
    KEY_ZENKAKUHANKAKU
    KEY_ZOOM
    KEY_ZOOMIN
    KEY_ZOOMOUT
    KEY_ZOOMRESET
    

    got it by printing code by editing this file: ~/.local/lib/python3.9/site-packages/evdev/ecodes.py

    The original file is written c lang and not found the source.

    opened by acro5piano 1
  • Feature Request: Different bindings per application

    Feature Request: Different bindings per application

    Unless I'm not understanding correctly, there isn't currently a way to configure a different set of bindings per application.

    I'd like to have apple style copy and paste on everything, but to do that I need to send control+c for most applications and control+shift+c for a handful of specific applications (my terminal)

    opened by minego 1
  • Keys are not being remapped

    Keys are not being remapped

    I think I have it installed and running correctly... I checked out the repo, ran 'pip3 install .' from the repo, and then went into /usr/lib/python3.10/site-packages/wayremap to modify the configuration and run it.

    I had to change main.py to use event22 instead of event4 (22 is my keyboard, 4 is my HDMI monitor).

    It is successfully recognizing when focus changes to a different application, but pressing the keys I have configured does not appear to do anything. I'm a bit lost...

    opened by minego 1
Releases(v0.0.9)
  • v0.0.9(Feb 19, 2022)

    What's Changed

    • breaking: support multiple keyboards (like USB keyboard) by @acro5piano in https://github.com/acro5piano/wayremap/pull/9
    • enable to wait sway startup by @acro5piano in https://github.com/acro5piano/wayremap/pull/10

    Full Changelog: https://github.com/acro5piano/wayremap/compare/v0.0.8...v0.0.9

    Source code(tar.gz)
    Source code(zip)
  • v0.0.8(Dec 12, 2021)

    What's Changed

    • works without sway, warning if no applications selected by @acro5piano in https://github.com/acro5piano/wayremap/pull/4
    • new config format to support all keys, close #2 by @acro5piano in https://github.com/acro5piano/wayremap/pull/5

    Breaking Change :warning:

    The config format was changed. To migrate, please see https://github.com/acro5piano/wayremap/commit/06d27c9bb86b766d7fd1e4230f3a16827785519e#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5R39-L52

    Full Changelog: https://github.com/acro5piano/wayremap/compare/v0.0.7...v0.0.8

    Source code(tar.gz)
    Source code(zip)
  • v0.0.7-1(Dec 10, 2021)

  • v0.0.7(Dec 10, 2021)

  • v0.0.6(Dec 10, 2021)

Owner
Kay Gosho
A Web Developer betting on TypeScript + GraphQL.
Kay Gosho
This is a package that allows you to create a key-value vault for storing variables in a global context

This is a package that allows you to create a key-value vault for storing variables in a global context. It allows you to set up a keyring with pre-defined constants which act as keys for the vault. These constants are then what is stored inside the vault. A key is just a string, but the value that the key is mapped to can be assigned to any type of object in Python. If the object is serializable (like a list or a dict), it can also be writen to a JSON file You can then use a decorator to annotate functions that you want to have use this vault to either store return variables in or to extract variables to be used as input for the function.

Data Ductus 2 Dec 14, 2022
New time-based UUID formats which are suited for use as a database key

uuid6 New time-based UUID formats which are suited for use as a database key. This module extends immutable UUID objects (the UUID class) with the fun

null 26 Dec 30, 2022
A simple API that will return a key-value pair of randomly generated UUID

A simple API that will return a key-value pair of randomly generated UUID. Key will be a timestamp and value will be UUID. While the server is running, whenever the API is called, it should return all the previous UUIDs ever generated by the API alongside a new UUID.

Pius Lucky 2 Jan 18, 2022
SysInfo is an app developed in python which gives Basic System Info , and some detailed graphs of system performance .

SysInfo SysInfo is an app developed in python which gives Basic System Info , and some detailed graphs of system performance . Installation Download t

null 5 Nov 8, 2021
Collection of code auto-generation utility scripts for the Horizon `Boot` system module

boot-scripts This is a collection of code auto-generation utility scripts for the Horizon Boot system module, intended for use in Atmosphère. Usage Us

null 4 Oct 11, 2022
Minimal Windows system information tool written in Python

wfetch wfetch is a Minimal Windows system information tool written in Python (Only works on Windows) Installation First of all have python installed.

zJairO 3 Jan 24, 2022
Tool to produce system call tables from Linux source code.

Syscalls Tool to generate system call tables from the linux source tree. Example The following will produce a markdown (.md) file containing the table

null 7 Jul 30, 2022
My custom Fedora ostree build with sway/wayland.

Ramblurr's Sway Desktop This is an rpm-ostree based minimal Fedora developer desktop with the sway window manager and podman/toolbox for doing develop

Casey Link 1 Nov 28, 2021
GTK3-based panel for sway window manager

nwg-panel I have been using sway since 2019 and find it the most comfortable working environment, but... Have you ever missed all the graphical bells

Piotr Miller 290 Jan 7, 2023
To dynamically change the split direction in I3/Sway so as to split new windows automatically based on the width and height of the focused window

To dynamically change the split direction in I3/Sway so as to split new windows automatically based on the width and height of the focused window Insp

Ritin George 6 Mar 11, 2022
A wrapper for slurm especially on Taiwania2 (HPC CLI)A wrapper for slurm especially on Taiwania2 (HPC CLI)

TWCC-slurm-wrapper A wrapper for slurm especially on Taiwania2 (HPC CLI). For Taiwania2 (HPC CLI) usage, please refer to here. (中文) How to Install? gi

Chi-Liang, Liu 5 Oct 7, 2022
Borderless-Window-Utility - Modifies window style to force most applications into a borderless windowed mode

Borderless-Window-Utility Modifies window style to force most applications into

null 8 Oct 22, 2022
Active window border replacement for window managers.

xborder Active window border replacement for window managers. Usage git clone https://github.com/deter0/xborder cd xborder chmod +x xborders ./xborder

deter 250 Dec 30, 2022
Simple Wayland HotKey Daemon

swhkd Simple Wayland HotKey Daemon This project is still very new and I'm making new decisions everyday as to where I should drive this project. I'm u

Aakash Sen Sharma 407 Dec 30, 2022
Wrapper to display a script output or a text file content on the desktop in sway or other wlroots-based compositors

nwg-wrapper This program is a part of the nwg-shell project. This program is a GTK3-based wrapper to display a script output, or a text file content o

Piotr Miller 94 Dec 27, 2022
A simple, transparent, open-source key logger, written in Python, for tracking your own key-usage statistics.

A simple, transparent, open-source key logger, written in Python, for tracking your own key-usage statistics, originally intended for keyboard layout optimization.

Ga68 56 Jan 3, 2023
Key Cast - Cast your key presses and mouse clicks on the screen, while casting your favorite application on the screen. Better than the rest.

Key Cast Screen cast your keyboard and mouse clicks in style Project Homepage » View Demo · Report Bug · Request Feature Table of Contents Introductio

Mehul Singh Teya 13 Dec 23, 2022
A program will generate a eth key pair that has the public key that starts with a defined amount of 0

ETHAdressGenerator This short program will generate a eth key pair that has the public key that starts with a defined amount of 0 Requirements Python

null 3 Nov 19, 2021
Key Logger - Key Logger using Python

Key_Logger Key Logger using Python This is the basic Keylogger that i have made

Mudit Sinha 2 Jan 15, 2022
PyPika is a python SQL query builder that exposes the full richness of the SQL language using a syntax that reflects the resulting query. PyPika excels at all sorts of SQL queries but is especially useful for data analysis.

PyPika - Python Query Builder Abstract What is PyPika? PyPika is a Python API for building SQL queries. The motivation behind PyPika is to provide a s

KAYAK 1.9k Jan 4, 2023