Comments (10)
A degree sign is not a combining character.
When creating dead keys using pynput.keyboard.KeyCode
, pynput assumes that you pass the non-combining character for a dead key, such as '~'
for COMBINING TILDE U+0303. To work around this, do the following:
from pynput.keyboard import KeyCode
dead = KeyCode(char='°')
dead.is_dead = True
dead.combining = u'\u0325'
print(dead.join(KeyCode.from_char('L')))
from pynput.
from pynput.
from pynput.
So the crash happens in pynput without the callback ever reaching you code?
Does the following snippet cause the crash?
from pynput import keyboard
with keyboard.Listener() as listener:
listener.join()
I don't have a degree sign on my keyboard, so I cannot test.
from pynput.
from pynput.
Actually, it crashes every time I type ° (degree), even if it is the first thing I do.
Does your degree key work?
from pynput.
Unfortunately my keyboard does not have a degree sign, so I cannot really test it.
But if the crash happens inside pynput without even reaching your code, it is definitely a bug in the library.
It happens because Windows, when calling MapVirtualKeyEx, sets the most significant bit, indicating that the character is a diacritic, or a dead character.
pynput works under the assumption that MapVirtualKeyEx(MAPVK_VK_TO_CHAR, ...)
will return a pre-composed combining character in these cases, so that pressing for example the dead key marked ~ will return TILDE. This does not appear to be the case. Is the degree sign an actual dead key on your keyboard? It seems reasonable to assume that it would then return RING ABOVE instead of DEGREE SIGN.
from pynput.
from pynput.
@SpecialCharacter, does this still happen with the master branch with a corrected keyboard listener?
from pynput.
This is a duplicate of #199, which has more recent activity, so I will close this issue.
from pynput.
Related Issues (20)
- Which python version is the latest release of pynput compatible with?
- Keyboardtracking CTRL + "second_key" doesn't output "second_key"
- pynput not detecting media keys on kde plasma wayland HOT 1
- Type method crashes on cyrillic characters HOT 1
- Suppress mouse move not working when using parsec HOT 1
- mouse listener example for win32_event_filter HOT 1
- Script Continues Rapid Clicking Despite Mouse Button Release (is_pressed Functionality Issue) HOT 6
- Press cmd_r and release with cmd pressed will produce two presses instead of press + release HOT 3
- Can this be used in Micropython? HOT 5
- Get the original pressed key HOT 1
- The Numpad numbers does not work in HotKeys.
- pynput types ">" instead of "|" HOT 1
- Need to sync keyboard lock keys
- AttributeError: record_create_context HOT 5
- capslock crshed on macOS HOT 2
- lazy imports cause a KeyError HOT 4
- Cannot install on linux Ubuntu (depends on pywin32) HOT 2
- name 'keyboard' is not defined HOT 1
- Additional keys can still trigger events HOT 2
- Missing 1.7.7 tarball on PyPI
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pynput.