From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1BqVKz-0004HT-5R for qemu-devel@nongnu.org; Fri, 30 Jul 2004 07:14:09 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1BqVKy-0004HH-EG for qemu-devel@nongnu.org; Fri, 30 Jul 2004 07:14:08 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1BqVKy-0004HE-9W for qemu-devel@nongnu.org; Fri, 30 Jul 2004 07:14:08 -0400 Received: from [151.189.21.45] (helo=mail-in-05.arcor-online.net) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1BqVHh-0008Ss-JM for qemu-devel@nongnu.org; Fri, 30 Jul 2004 07:10:46 -0400 Received: from hatatitla.NotaMusica.com (dsl-082-083-129-179.arcor-ip.net [82.83.129.179]) by mail-in-05.arcor-online.net (Postfix) with ESMTP id A33B6EBA4 for ; Fri, 30 Jul 2004 13:10:43 +0200 (CEST) Received: from hatatitla.NotaMusica.com (jmartin@localhost [127.0.0.1]) by hatatitla.NotaMusica.com (8.12.3/8.12.3/Debian-6.6) with ESMTP id i6UBAg2R006527 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Fri, 30 Jul 2004 13:10:42 +0200 Received: from localhost (jmartin@localhost) by hatatitla.NotaMusica.com (8.12.3/8.12.3/Debian-6.6) with ESMTP id i6UBAgIs006522 for ; Fri, 30 Jul 2004 13:10:42 +0200 Date: Fri, 30 Jul 2004 13:10:42 +0200 (CEST) From: Johannes Martin Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463811071-843110026-1091185842=:5816" Subject: [Qemu-devel] Keyboard handling patch Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---1463811071-843110026-1091185842=:5816 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi, the attached patch helps with two things: - keys no longer stick when leaving/entering the qemu window (I send part of that patch before, the most common problem was that ctrl/shift would stick when leaving grab mode) - qemu can now handle the modifier keys caps and num lock for the guest operating system. This is useful for two reasons: - some guest OSs crash when modifier keys change their state suddenly (i.e. caps lock is pressed when leaving the window and depressed when entering the window again) - on some national keyboards and some OSes, caps lock isn't reset by pushing caps lock again but by pushing one of the shift keys. This would result in the caps lock led not showing the actual caps lock state of the guest OS. I have added another command line option -sdl-mods. If this option is used, qemu will not report caps and num lock to the guest os but simulate a pushed-down shift key before any alpha-key while caps lock is down and before any key of the numeric keypad when num lock is down. I have tested this patch for some time on OS/2 and it works fine. Johannes ---1463811071-843110026-1091185842=:5816 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=patch SW5kZXg6IHNkbC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmls ZTogL2N2c3Jvb3QvcWVtdS9xZW11L3NkbC5jLHYNCnJldHJpZXZpbmcgcmV2 aXNpb24gMS4xNg0KZGlmZiAtYyAtcjEuMTYgc2RsLmMNCioqKiBzZGwuYwkx NCBKdWwgMjAwNCAxNzoyMjozMyAtMDAwMAkxLjE2DQotLS0gc2RsLmMJMzAg SnVsIDIwMDQgMTE6MDE6MTYgLTAwMDANCioqKioqKioqKioqKioqKg0KKioq IDMwMSwzMDYgKioqKg0KLS0tIDMwMSwzMDcgLS0tLQ0KICAgICAgICAgICAg ICAgICAgaWYgKGkgJiAweDgwKQ0KICAgICAgICAgICAgICAgICAgICAgIGti ZF9wdXRfa2V5Y29kZSgweGUwKTsNCiAgICAgICAgICAgICAgICAgIGtiZF9w dXRfa2V5Y29kZShpIHwgMHg4MCk7DQorIAkJbW9kaWZpZXJzX3N0YXRlW2ld ID0gMDsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAg ICByZXR1cm47DQoqKioqKioqKioqKioqKioNCioqKiAzMTcsMzI4ICoqKioN CiAgICAgICAgICBicmVhazsNCiAgICAgIGNhc2UgMHg0NTogLyogbnVtIGxv Y2sgKi8NCiAgICAgIGNhc2UgMHgzYTogLyogY2FwcyBsb2NrICovDQohICAg ICAgICAgLyogU0RMIGRvZXMgbm90IHNlbmQgdGhlIGtleSB1cCBldmVudCwg c28gd2UgZ2VuZXJhdGUgaXQgKi8NCiEgICAgICAgICBrYmRfcHV0X2tleWNv ZGUoa2V5Y29kZSk7DQohICAgICAgICAga2JkX3B1dF9rZXljb2RlKGtleWNv ZGUgfCAweDgwKTsNCiEgICAgICAgICByZXR1cm47DQogICAgICB9DQogIA0K ICAgICAgLyogbm93IHNlbmQgdGhlIGtleSBjb2RlICovDQogICAgICBpZiAo a2V5Y29kZSAmIDB4ODApDQogICAgICAgICAga2JkX3B1dF9rZXljb2RlKDB4 ZTApOw0KLS0tIDMxOCwzNDAgLS0tLQ0KICAgICAgICAgIGJyZWFrOw0KICAg ICAgY2FzZSAweDQ1OiAvKiBudW0gbG9jayAqLw0KICAgICAgY2FzZSAweDNh OiAvKiBjYXBzIGxvY2sgKi8NCiEgCWlmICghc2RsX21vZHMpIHsNCiEgCSAg ICAvKiBTREwgZG9lcyBub3Qgc2VuZCB0aGUga2V5IHVwIGV2ZW50LCBzbyB3 ZSBnZW5lcmF0ZSBpdCAqLw0KISAJICAgIGtiZF9wdXRfa2V5Y29kZShrZXlj b2RlKTsNCiEgCSAgICBrYmRfcHV0X2tleWNvZGUoa2V5Y29kZSB8IDB4ODAp Ow0KISAJfQ0KISAJcmV0dXJuOw0KICAgICAgfQ0KICANCisgICAgIGlmIChz ZGxfbW9kcyAmJiAoZXYtPnR5cGUgPT0gU0RMX0tFWURPV04pICYmIA0KKyAJ KCgoU0RMX0dldE1vZFN0YXRlKCkgJiBLTU9EX0NBUFMpICYmIA0KKyAJICAo ZXYtPmtleXN5bS5zeW0gPj0gJ2EnKSAmJg0KKyAJICAoZXYtPmtleXN5bS5z eW0gPD0gJ3onKSkgfA0KKyAJICgoU0RMX0dldE1vZFN0YXRlKCkgJiBLTU9E X05VTSkgJiYNCisgCSAgKGV2LT5rZXlzeW0uc3ltID49IFNETEtfS1AwKSAm Jg0KKyAJICAoZXYtPmtleXN5bS5zeW0gPD0gU0RMS19LUF9FUVVBTFMpKSkp DQorIAlrYmRfcHV0X2tleWNvZGUoMHgyYSk7DQorIA0KICAgICAgLyogbm93 IHNlbmQgdGhlIGtleSBjb2RlICovDQogICAgICBpZiAoa2V5Y29kZSAmIDB4 ODApDQogICAgICAgICAga2JkX3B1dF9rZXljb2RlKDB4ZTApOw0KKioqKioq KioqKioqKioqDQoqKiogMzMwLDMzNSAqKioqDQotLS0gMzQyLDM3MSAtLS0t DQogICAgICAgICAga2JkX3B1dF9rZXljb2RlKGtleWNvZGUgfCAweDgwKTsN CiAgICAgIGVsc2UNCiAgICAgICAgICBrYmRfcHV0X2tleWNvZGUoa2V5Y29k ZSAmIDB4N2YpOw0KKyANCisgICAgIGlmIChzZGxfbW9kcyAmJiAoZXYtPnR5 cGUgPT0gU0RMX0tFWURPV04pICYmIA0KKyAJKCgoU0RMX0dldE1vZFN0YXRl KCkgJiBLTU9EX0NBUFMpICYmIA0KKyAJICAoZXYtPmtleXN5bS5zeW0gPj0g J2EnKSAmJg0KKyAJICAoZXYtPmtleXN5bS5zeW0gPD0gJ3onKSkgfA0KKyAJ ICgoU0RMX0dldE1vZFN0YXRlKCkgJiBLTU9EX05VTSkgJiYNCisgCSAgKGV2 LT5rZXlzeW0uc3ltID49IFNETEtfS1AwKSAmJg0KKyAJICAoZXYtPmtleXN5 bS5zeW0gPD0gU0RMS19LUF9FUVVBTFMpKSkpDQorIAlrYmRfcHV0X2tleWNv ZGUoMHgyYSB8IDB4ODApOw0KKyANCisgfQ0KKyANCisgLyogdHlwZTogMSAt IGRvd24sIDIgLSB1cCwgMyAtIGRvd24vdXAgKi8NCisgc3RhdGljIHZvaWQg c2RsX2Zha2Vfa2V5KGludCB0eXBlLCBTRExLZXkga2V5c3ltKSB7DQorICAg ICBTRExfS2V5Ym9hcmRFdmVudCBldjsNCisgICAgIGV2LmtleXN5bS5zeW0g PSBrZXlzeW07DQorICAgICBpZiAodHlwZSAmIDEpIHsNCisgCWV2LnR5cGUg PSBTRExfS0VZRE9XTjsNCisgCXNkbF9wcm9jZXNzX2tleSgmZXYpOw0KKyAg ICAgfQ0KKyAgICAgaWYgKHR5cGUgJiAyKSB7DQorIAlldi50eXBlID0gU0RM X0tFWVVQOw0KKyAJc2RsX3Byb2Nlc3Nfa2V5KCZldik7DQorICAgICB9DQog IH0NCiAgDQogIHN0YXRpYyB2b2lkIHNkbF91cGRhdGVfY2FwdGlvbih2b2lk KQ0KKioqKioqKioqKioqKioqDQoqKiogNDkxLDQ5NyAqKioqDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2RsX2dyYWJfc3RhcnQoKTsN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZGxfZ3JhYl9lbmQoKTsNCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAg ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAg IGd1aV9rZXlfbW9kaWZpZXJfcHJlc3NlZCA9IDA7DQogICAgICAgICAgICAg ICAgICAgICAgICAgIGd1aV9rZXlzeW0gPSAwOw0KLS0tIDUyNyw1MzIgLS0t LQ0KKioqKioqKioqKioqKioqDQoqKiogNTI1LDUzMCAqKioqDQotLS0gNTYw LDU4MCAtLS0tDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgYnJl YWs7DQogICAgICAgICAgY2FzZSBTRExfQUNUSVZFRVZFTlQ6DQorIAkgICAg aWYgKGlzX2FjdGl2ZV9jb25zb2xlKHZnYV9jb25zb2xlKSkNCisgCQkvKiBp ZiBnYWluaW5nIG9yIGxvc2luZyBpbnB1dCBmb2N1cywgY2hlY2sgd2hpY2gg a2V5cyBhcmUNCisgCQkgICBjdXJyZW50bHkgcHJlc3NlZCBhbmQga2V5IGRv d24gKGdhaW4pIHJlc3AuIGtleSB1cCAobG9zZSkNCisgCQkgICBmb3IgYWxs IHRob3NlIGtleXMgc28gd2UgZG9uJ3QgZW5kIHVwIHdpdGggc3R1Y2sga2V5 cw0KKyAJCSAgIGluIHRoZSBndWVzdCAqLw0KKyAJCWlmIChldi0+YWN0aXZl LnN0YXRlICYgU0RMX0FQUElOUFVURk9DVVMpIHsNCisgCQkgICAgaW50IG51 bWtleXM7DQorIAkJICAgIFVpbnQ4KiBrZXlzdGF0ZTsNCisgCQkgICAga2V5 c3RhdGUgPSBTRExfR2V0S2V5U3RhdGUoJm51bWtleXMpOw0KKyAJCSAgICB3 aGlsZSAobnVta2V5cy0tID4gMCkgDQorIAkJCWlmIChrZXlzdGF0ZVtudW1r ZXlzXSkNCisgCQkJICAgIHNkbF9mYWtlX2tleShldi0+YWN0aXZlLmdhaW4g PyAxIDogMiwgbnVta2V5cyk7DQorIAkJICAgIGlmICghZXYtPmFjdGl2ZS5n YWluKSANCisgCQkJc2RsX2Zha2Vfa2V5KDEsIDApOw0KKyAJCX0NCiAgICAg ICAgICAgICAgaWYgKGd1aV9ncmFiICYmIChldi0+YWN0aXZlLmdhaW4gJiBT RExfQUNUSVZFRVZFTlRNQVNLKSA9PSAwKSB7DQogICAgICAgICAgICAgICAg ICBzZGxfZ3JhYl9lbmQoKTsNCiAgICAgICAgICAgICAgfQ0KSW5kZXg6IHZs LmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3Zzcm9v dC9xZW11L3FlbXUvdmwuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOTAN CmRpZmYgLWMgLXIxLjkwIHZsLmMNCioqKiB2bC5jCTE0IEp1bCAyMDA0IDE3 OjI3OjMxIC0wMDAwCTEuOTANCi0tLSB2bC5jCTMwIEp1bCAyMDA0IDExOjAx OjIxIC0wMDAwDQoqKioqKioqKioqKioqKioNCioqKiAxMzUsMTQwICoqKioN Ci0tLSAxMzUsMTQxIC0tLS0NCiAgaW50IHByZXBfZW5hYmxlZCA9IDA7DQog IGludCBydGNfdXRjID0gMTsNCiAgaW50IGNpcnJ1c192Z2FfZW5hYmxlZCA9 IDE7DQorIGludCBzZGxfbW9kcyA9IDA7DQogIGludCBncmFwaGljX3dpZHRo ID0gODAwOw0KICBpbnQgZ3JhcGhpY19oZWlnaHQgPSA2MDA7DQogIGludCBn cmFwaGljX2RlcHRoID0gMTU7DQoqKioqKioqKioqKioqKioNCioqKiAyMzY5 LDIzNzQgKioqKg0KLS0tIDIzNzAsMjM3NiAtLS0tDQogICAgICAgICAgICAg Ii1zdGQtdmdhICAgICAgICBzaW11bGF0ZSBhIHN0YW5kYXJkIFZHQSBjYXJk IHdpdGggVkVTQSBCb2NocyBFeHRlbnNpb25zXG4iDQogICAgICAgICAgICAg IiAgICAgICAgICAgICAgICAoZGVmYXVsdCBpcyBDTC1HRDU0NDYgUENJIFZH QSlcbiINCiAgI2VuZGlmDQorIAkgICAiLXNkbC1tb2RzICAgICAgIGhhbmRs ZSBjYXBzL251bSBsb2NrIGluIGVtdWxhdG9yIChub3QgZ3Vlc3QpXG4iDQog ICAgICAgICAgICAgIlxuIg0KICAgICAgICAgICAgICJEdXJpbmcgZW11bGF0 aW9uLCB0aGUgZm9sbG93aW5nIGtleXMgYXJlIHVzZWZ1bDpcbiINCiAgICAg ICAgICAgICAiY3RybC1zaGlmdC1mICAgIHRvZ2dsZSBmdWxsIHNjcmVlblxu Ig0KKioqKioqKioqKioqKioqDQoqKiogMjQzOCwyNDQzICoqKioNCi0tLSAy NDQwLDI0NDYgLS0tLQ0KICAgICAgUUVNVV9PUFRJT05fY2lycnVzdmdhLA0K ICAgICAgUUVNVV9PUFRJT05fZywNCiAgICAgIFFFTVVfT1BUSU9OX3N0ZF92 Z2EsDQorICAgICBRRU1VX09QVElPTl9zZGxfbW9kcywNCiAgICAgIFFFTVVf T1BUSU9OX21vbml0b3IsDQogICAgICBRRU1VX09QVElPTl9zZXJpYWwsDQog IH07DQoqKioqKioqKioqKioqKioNCioqKiAyNDkxLDI0OTYgKioqKg0KLS0t IDI0OTQsMjUwMCAtLS0tDQogICAgICB7ICJsb2NhbHRpbWUiLCAwLCBRRU1V X09QVElPTl9sb2NhbHRpbWUgfSwNCiAgICAgIHsgImlzYSIsIDAsIFFFTVVf T1BUSU9OX2lzYSB9LA0KICAgICAgeyAic3RkLXZnYSIsIDAsIFFFTVVfT1BU SU9OX3N0ZF92Z2EgfSwNCisgICAgIHsgInNkbC1tb2RzIiwgMCwgUUVNVV9P UFRJT05fc2RsX21vZHMgfSwNCiAgICAgIHsgIm1vbml0b3IiLCAxLCBRRU1V X09QVElPTl9tb25pdG9yIH0sDQogICAgICB7ICJzZXJpYWwiLCAxLCBRRU1V X09QVElPTl9zZXJpYWwgfSwNCiAgICAgIA0KKioqKioqKioqKioqKioqDQoq KiogMjc5MiwyNzk3ICoqKioNCi0tLSAyNzk2LDI4MDQgLS0tLQ0KICAgICAg ICAgICAgICBjYXNlIFFFTVVfT1BUSU9OX3N0ZF92Z2E6DQogICAgICAgICAg ICAgICAgICBjaXJydXNfdmdhX2VuYWJsZWQgPSAwOw0KICAgICAgICAgICAg ICAgICAgYnJlYWs7DQorIAkgICAgY2FzZSBRRU1VX09QVElPTl9zZGxfbW9k czoNCisgCQlzZGxfbW9kcyA9IDE7DQorIAkJYnJlYWs7DQogICAgICAgICAg ICAgIGNhc2UgUUVNVV9PUFRJT05fZzoNCiAgICAgICAgICAgICAgICAgIHsN CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwOw0KSW5kZXg6 IHZsLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3Zz cm9vdC9xZW11L3FlbXUvdmwuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEu NDkNCmRpZmYgLWMgLXIxLjQ5IHZsLmgNCioqKiB2bC5oCTE0IEp1bCAyMDA0 IDE3OjI3OjMzIC0wMDAwCTEuNDkNCi0tLSB2bC5oCTMwIEp1bCAyMDA0IDEx OjAxOjIzIC0wMDAwDQoqKioqKioqKioqKioqKioNCioqKiAyMzgsMjQzICoq KioNCi0tLSAyMzgsMjQ0IC0tLS0NCiAgZXh0ZXJuIGludCBiaW9zX3NpemU7 DQogIGV4dGVybiBpbnQgcnRjX3V0YzsNCiAgZXh0ZXJuIGludCBjaXJydXNf dmdhX2VuYWJsZWQ7DQorIGV4dGVybiBpbnQgc2RsX21vZHM7DQogIGV4dGVy biBpbnQgZ3JhcGhpY193aWR0aDsNCiAgZXh0ZXJuIGludCBncmFwaGljX2hl aWdodDsNCiAgZXh0ZXJuIGludCBncmFwaGljX2RlcHRoOw0K ---1463811071-843110026-1091185842=:5816--