नोट: e.IsRepeat
काम करने की पुष्टि है। समस्या मौजूद है क्योंकि मैं उबंटू से विंडोज तक रिमोट डेस्कटॉप का उपयोग करता हूं।डब्ल्यूपीएफ: कुंजी * घटनाओं में कुंजी पुनरावृत्ति का पता कैसे लगाया जाए?
- उबंटू में अक्षम कुंजी पुनरावृत्ति:
मैं इस दूरस्थ डेस्कटॉप समस्या के लिए एक समाधान मिल गया।
- मेजबान विंडोज में: "दोहराएँ कुंजी और धीरे कुंजी चालू करें"
HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response
- पर्याप्त
AutoRepeatDelay
,AutoRepeatRate
, औरLast Valid Delay
,Last Valid Repeat
छोटे करने के लिए सेट करने के लिए जाना regedit का उपयोग के साथ FilterKeys सक्षम करें। - फ़िल्टरकेज़ अक्षम करें और रजिस्ट्री परिवर्तनों को रीफ्रेश करने के लिए पुन: सक्षम करें।
- पर्याप्त
कैसे एक KeyUp
/KeyDown
(या PreviewKeyDown
/PreviewKeyUp
) की घटनाओं में महत्वपूर्ण पुनरावृत्ति पता लगाता है?
मैं निम्नलिखित है परीक्षण का मामला:
public Window1() {
InitializeComponent();
this.KeyDown += new KeyEventHandler(Window1_KeyDown);
this.KeyUp += new KeyEventHandler(Window1_KeyUp);
}
void Window1_KeyUp(object sender, KeyEventArgs e) {
if (e.Key == Key.D) {
Console.WriteLine("DOWN: key: {0}, rep{1}, togg{2}, dow{3}, up{4}", e.Key, e.IsRepeat, e.IsToggled, e.IsDown, e.IsUp);
}
}
void Window1_KeyDown(object sender, KeyEventArgs e) {
if (e.Key == Key.D) {
Console.WriteLine("UP: key: {0}, rep{1}, togg{2}, dow{3}, up{4}", e.Key, e.IsRepeat, e.IsToggled, e.IsDown, e.IsUp);
}
}
यह मेरे आउटपुट स्क्रीन के लिए देता है निम्नलिखित अगर मैं अक्षर D नीचे दबाएँ और कुछ समय के बाद इसे जारी:
// Note: Here I press D-key down.
UP: key: D, repFalse, toggTrue, dowTrue, upFalse
DOWN: key: D, repFalse, toggTrue, dowFalse, upTrue
UP: key: D, repFalse, toggFalse, dowTrue, upFalse
DOWN: key: D, repFalse, toggFalse, dowFalse, upTrue
UP: key: D, repFalse, toggTrue, dowTrue, upFalse
DOWN: key: D, repFalse, toggTrue, dowFalse, upTrue
UP: key: D, repFalse, toggFalse, dowTrue, upFalse
DOWN: key: D, repFalse, toggFalse, dowFalse, upTrue
UP: key: D, repFalse, toggTrue, dowTrue, upFalse
DOWN: key: D, repFalse, toggTrue, dowFalse, upTrue
UP: key: D, repFalse, toggFalse, dowTrue, upFalse
DOWN: key: D, repFalse, toggFalse, dowFalse, upTrue
UP: key: D, repFalse, toggTrue, dowTrue, upFalse
DOWN: key: D, repFalse, toggTrue, dowFalse, upTrue
UP: key: D, repFalse, toggFalse, dowTrue, upFalse
DOWN: key: D, repFalse, toggFalse, dowFalse, upTrue
UP: key: D, repFalse, toggTrue, dowTrue, upFalse
DOWN: key: D, repFalse, toggTrue, dowFalse, upTrue
UP: key: D, repFalse, toggFalse, dowTrue, upFalse
DOWN: key: D, repFalse, toggFalse, dowFalse, upTrue
UP: key: D, repFalse, toggTrue, dowTrue, upFalse
DOWN: key: D, repFalse, toggTrue, dowFalse, upTrue
UP: key: D, repFalse, toggFalse, dowTrue, upFalse
DOWN: key: D, repFalse, toggFalse, dowFalse, upTrue
// Note: Here I release D-key.
जाहिर e.IsRepeat
है हमेशा झूठा, तो यह बेकार है। मैंने यह भी देखा कि कभी-कभी पहली घटना भी toggFalse, dowTrue है, ताकि पैटर्न के रूप में उपयोग नहीं किया जा सके।
मैं यह भी ध्यान देता हूं कि समय का उपयोग करने का चालाक तरीका पुनरावृत्ति का पता लगाने के लिए उपयोग किया जा सकता है, लेकिन ऐसा करने का मूल तरीका होना चाहिए।
आगे देख रहे हैं: मुझे लगता है कि मैं आपके प्रयोग को दोहराना नहीं कर सकता। क्या टेक्स्टबॉक्स का उपयोग करना है, चाहे कंसोल पर लिखना है, चाहे डीबग या रिलीज़ में हों, चाहे KeyDown या previewKeyDown में यह हमेशा 'IsRepeat' सेट करता है। क्या आपके कोड का कोई हिस्सा नहीं दिखाया गया है? – Abel
हाबिल, नहीं, मैंने इसके लिए खाली परियोजना बनाई है। – Ciantic
आप कहते हैं कि आप दूरस्थ डेस्कटॉप पर हैं। क्या आप इसे बिना कोशिश कर सकते हैं? बहुत संभावना है, आरडी + उबंटू आपको भागों खेल रहे हैं। – Abel